Mongodb php获取新文件的ID?

Mar*_*ark 35 php mongodb mongodb-php

创建文档:

$db->collection->insert($content);
// $newDocID = ???
Run Code Online (Sandbox Code Playgroud)

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

The*_*heo 62

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

$db->collection->insert($content);
$newDocID = $content['_id'];
Run Code Online (Sandbox Code Playgroud)

  • 如果在执行另一个操作之前插入了__need__之后,你可能还会看到添加`fsync`选项:`$ db-> collection-> insert($ content,'fsync'=>\TRUE);`这个确保首先完成"交易"...... (11认同)

小智 34

你也可以插入获得_id .只需将_id字段添加到具有新MongoId的文档即.

$content['_id'] = new MongoId();
$db->collection->insert($content);
Run Code Online (Sandbox Code Playgroud)

这也有很好的好处:

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


the*_*oot 14

这对我有用:

$insertResult = $collection->insertOne($object);
$id = $insertResult->getInsertedId();
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考。getInsertedId方法将返回一个\ MongoDB \ BSON \ ObjectID实例。要获取实际的Id值,请将其强制转换为字符串:`(string)$ insertResult-> getInsertedId()` (3认同)