Mongodb php получить идентификатор нового документа?
создание документа:
$db->collection->insert($content);
// $newDocID = ???
Я пытаюсь получить идентификатор нового документа. Как? Спасибо.
4 ответов
вы также можете получить _id до вставить. Просто добавьте поле _id в документ с новым MongoId ie.
$content['_id'] = new MongoId();
$db->collection->insert($content);
также есть хорошие преимущества этого:
- вам не нужен флаг fsync, как опубликовано в комментарии ZagNut в предыдущий ответ. Поэтому вам не нужно ждать ответа от DB.
- вам не нужно на самом деле вставлять что-либо в DB, чтобы получить id. Так что вы можете подготовьте некоторые связанные объекты, а затем вставить или не вставить ними - несколько похоже на транзакции, которые mongo не поддерживает (пока?).
- ты на самом деле 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'};