ObjectIdを早期に生成し、挿入で使用すると、データベースからオブジェクトIDが返される必要がなくなります。ObjectIdは共有シーケンス番号を使用して一意になることはないため、挿入前に生成するかどうかは関係ありません。または後で取得します。
public ObjectId createThing() {
ObjectId result = new ObjectId();
BasicDBObject thingToInsert = new BasicDbObject();
thingToInsert.put('_id', result);
//set other fields here
collection.insert(thingToInsert);
return result;
}