在 mongoDB 中查找具有 ObjectID 的文档

2022-08-30 14:43:23

当我将一些文档插入到集合中(没有ObjectID)时,mongoDB会添加自己的ObjectID。

我想通过其唯一的 ObjectID 查询文档。

$db->collection_name->find(array('_id'=>'4e49fd8269fd873c0a000000')));

它不能在'4e49fd8269fd873c0a000000'前面的MongoID或ObjectID前缀下工作。

在PHP中使用mongoDB通过ObjectID查询的正确方法是什么?


答案 1

非常确定您必须使用MongoId对象,例如

$item = $collection->findOne(array(
    '_id' => new MongoId('4e49fd8269fd873c0a000000')));

查询页面上的注释有点迟钝,但它确实提到了...

除非用户另有指定,否则_id字段为 MongoId。最常见的错误是使用字符串来匹配MongoId。请记住,这是两种不同的数据类型,并且不会以与字符串“array()”不相同的方式相互匹配


答案 2

我认为现在API更改为,您也可以使用PHP 5.4 +中的数组来表示,因此它应该是:MongoDB\BSON\ObjectID[]

$item = $collection->findOne(['_id' => new MongoDB\BSON\ObjectID( idToken )]);

基于菲尔的回答。


推荐