在mongoDB中查找具有ObjectID的文档

Ins*_*dJW 25 php mongodb mongodb-php

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

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

$db->collection_name->find(array('_id'=>'4e49fd8269fd873c0a000000')));
Run Code Online (Sandbox Code Playgroud)

它不能用于'4e49fd8269fd873c0a000000'前面的MongoID前缀或ObjectID.

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

Phi*_*hil 56

很确定你必须使用一个MongoId物体,例如

$item = $collection->findOne(array(
    '_id' => new MongoId('4e49fd8269fd873c0a000000')));
Run Code Online (Sandbox Code Playgroud)

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

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


coo*_*god 16

我认为现在API改变了MongoDB\BSON\ObjectID,你也可以[]用来表示PHP 5.4+中的数组,所以它应该是:

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

根据菲尔的回答.