Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

$insertResult = $collection->insertOne($object);
$id = $insertResult->getInsertedId();