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

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

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

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

4 ответов


По данным документы массив передать в insert будет изменен с


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

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

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

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

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

$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