Mongodb php get id of new document?
Creating a document:
$db->collection->insert($conten开发者_如何学编程t);
// $newDocID = ???
I'm trying to get the new document's id. How? Thanks.
According to the docs the array you pass to insert
will be amended with an _id
field:
$db->collection->insert($content);
$newDocID = $content['_id'];
You can also get _id before insert. Just add _id field to document with new MongoId ie.
$content['_id'] = new MongoId();
$db->collection->insert($content);
Also there are nice benefits of this:
- You don't need fsync flag like posted in comment by ZagNut in previous answer. So you don't need to wait for reply from DB.
- You don't need to actually insert anything to DB to get id. So you can prepare some related objects and then insert or not insert them - somewhat like transactions which mongo does not support (yet?).
- You actually can generate id in your application, not in db, So you can do whatever you want before or after insert.
This works for me:
$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
精彩评论