Mongodb的PHP获得新文件的ID?
创build文档:
$db->collection->insert($content); // $newDocID = ???
我正在尝试获取新文档的ID。 怎么样? 谢谢。
根据文档 ,你传入的数组将被修改一个_id
字段:
$db->collection->insert($content); $newDocID = $content['_id'];
插入前你也可以得到_id。 只需添加_id字段文件与新的MongoId即。
$content['_id'] = new MongoId(); $db->collection->insert($content);
也有这样的好处:
- 在之前的回答中,您不需要像ZagNut发表的评论中的fsync标志。 所以你不需要等待数据库的回复。
- 你不需要实际插入任何东西到DB来获得ID。 所以你可以准备一些相关的对象,然后插入或不插入它们 – 有点像mongo不支持的事务(但是?)。
- 你实际上可以在你的应用程序中生成id,而不是在db中,所以你可以在插入之前或之后做任何你想做的事情。
这适用于我:
$insertResult = $collection->insertOne($object); $id = $insertResult->getInsertedId();
$newDocument = $db->collection->findAndModify ( $row, $row, null, array('new'=>true,'upsert' => true)); $strId = $newDocument['_id']->{'$id'};