Mongodb php获取新文件的ID?

时间:2010-12-24 09:57:36

标签: php mongodb mongodb-php

创建文档:

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

我正在尝试获取新文档的ID。怎么样?感谢。

4 个答案:

答案 0 :(得分:62)

根据the docs,您传递给insert的数组将使用_id字段进行修改:

$db->collection->insert($content);
$newDocID = $content['_id'];

答案 1 :(得分:34)

您也可以在插入之前获取_id 。只需将_id字段添加到具有新MongoId的文档即

$content['_id'] = new MongoId();
$db->collection->insert($content);

这也有很好的好处:

  1. 您不需要像ZagNut在评论中发布的fsync标志 以前的答案。所以你不需要等待DB的回复。
  2. 您无需向DB插入任何内容即可获取ID。所以你可以 准备一些相关的对象,然后插入或不插入 - 有点像mongo不支持的交易(还有?)。
  3. 你实际上可以在你的应用程序中生成id,而不是在db中生成id,所以你可以 在插入之前或之后做任何你想做的事。

答案 2 :(得分:13)

这对我有用:

$insertResult = $collection->insertOne($object);
$id = $insertResult->getInsertedId();

答案 3 :(得分:0)

 $newDocument = $db->collection->findAndModify ( $row, $row, null, array('new'=>true,'upsert' => true));
 $strId = $newDocument['_id']->{'$id'};

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