当我将一些文档插入集合(没有ObjectID)时,mongoDB添加了自己的ObjectID.
我想通过其唯一的ObjectID查询文档.
$db->collection_name->find(array('_id'=>'4e49fd8269fd873c0a000000')));
它不能用于'4e49fd8269fd873c0a000000'前面的MongoID前缀或ObjectID.
使用PHP中的mongoDB通过ObjectID进行查询的正确方法是什么?
很确定你必须使用一个MongoId
物体,例如
$item = $collection->findOne(array( '_id' => new MongoId('4e49fd8269fd873c0a000000')));
查询页面上的注释有点迟钝,但确实提到了......
除非用户另有指定,否则_id字段是MongoId.最常见的错误是使用字符串来匹配MongoId.请记住,这些是两种不同的数据类型,并且不会以字符串"array()"与空数组不同的方式相互匹配
我认为现在API改变了MongoDB\BSON\ObjectID
,你也可以[]
用来表示PHP 5.4+中的数组,所以它应该是:
$item = $collection->findOne(['_id' => new MongoDB\BSON\ObjectID( idToken )]);
根据菲尔的回答.