Mongodb PHP получить идентификатор нового документа? - PullRequest
35 голосов
/ 24 декабря 2010

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

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

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

Ответы [ 4 ]

62 голосов
/ 24 декабря 2010

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

$db->collection->insert($content);
$newDocID = $content['_id'];
34 голосов
/ 13 июля 2012

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

Вам не нужно ничего вставлять в БД, чтобы получить идентификатор.Таким образом, вы можете подготовить некоторые связанные объекты, а затем вставить или не вставить их - как транзакции, которые Монго не поддерживает (пока?). Вы на самом деле можете генерироватьидентификатор в вашем приложении, а не в дБ, так что вы можете делать все, что вы хотите, до или после вставки.
13 голосов
/ 15 июня 2016

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

$insertResult = $collection->insertOne($object);
$id = $insertResult->getInsertedId();
1 голос
/ 21 сентября 2014
 $newDocument = $db->collection->findAndModify ( $row, $row, null, array('new'=>true,'upsert' => true));
 $strId = $newDocument['_id']->{'$id'};

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...