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); 

也有这样的好处:

  1. 在之前的回答中,您不需要像ZagNut发表的评论中的fsync标志。 所以你不需要等待数据库的回复。
  2. 你不需要实际插入任何东西到DB来获得ID。 所以你可以准备一些相关的对象,然后插入或不插入它们 – 有点像mongo不支持的事务(但是?)。
  3. 你实际上可以在你的应用程序中生成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'}; 

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