Mongodb php получает идентификатор нового документа?

Создание документа:

$db->collection->insert($content); // $newDocID = ??? 

Я пытаюсь получить идентификатор нового документа. Как? Благодарю.

Согласно документам, в массив, который вы передаете insert будут внесены изменения с помощью поля _id :

 $db->collection->insert($content); $newDocID = $content['_id']; 

Вы также можете получить _id перед вставкой. Просто добавьте поле _id в документ с новым MongoId, т.е.

 $content['_id'] = new MongoId(); $db->collection->insert($content); 

Также есть хорошие преимущества:

  1. Вам не нужен флаг fsync, который был опубликован в комментарии ZagNut в предыдущем ответе. Поэтому вам не нужно ждать ответа от БД.
  2. Вам не нужно вставлять ничего в БД для получения идентификатора. Таким образом, вы можете подготовить некоторые связанные объекты, а затем вставить или не вставить их – несколько как транзакции, которые mongo не поддерживает (пока?).
  3. Фактически вы можете генерировать идентификатор в своем приложении, а не в db, поэтому вы можете делать все, что захотите, до или после вставки.

Это работает для меня:

 $insertResult = $collection->insertOne($object); $id = $insertResult->getInsertedId(); 
  $newDocument = $db->collection->findAndModify ( $row, $row, null, array('new'=>true,'upsert' => true)); $strId = $newDocument['_id']->{'$id'}; 

http://php.net/manual/en/mongocollection.findandmodify.php