我正在尝试通过它的MongoID "_id“字段在mongoDB中查找记录。我已经找到了如何做到这一点的例子,但无法让它工作。示例:
$recID = "010101010101011"; //would be a valid mongodb _id
$recID = new MongoId((string)$recID); // I have tried it without the (string) cast too
$cursor = $this->Collection->findOne(array('_id' => $recID));
print_r($cursor);它输出:
MongoCursor (
)里面什么都没有。
我已经通过将上面的"_id“更改为一个不同的字段(如"firstName”)并传入名字来验证其他一切都在工作,然后我得到了有效的数据。
为什么这不起作用?
我甚至尝试过将$recID作为字符串进行搜索,没有区别。
下面是mongo shell中发生的事情(尽管我不确定我的查询是否正确):
>
> db.Employee.find({login:"myperson"})
{ "_explicitType" : "project.Employee", "_id" : ObjectId("4e209564203d83940f0000
06"), "active" : true, "addedDate" : "07/15/2011 15:29:21", "domain" : "xxx",
"id" : ObjectId("4e209564203d83940f000006"), "lastLogin" : "07/20/2011 19:13:36
", "login" : "myperson", "name" : "My Person", "pw" : "", "ulevel" : 9999
}
> db.Employee.find({id:"4e209564203d83940f000006"})
> db.Employee.find({_id:"4e209564203d83940f000006"})
>请注意,id或_id没有返回任何内容。
发布于 2014-05-07 03:35:15
你可以用ObjectID包装器包装你的id。这告诉mongo db您正在寻找特定的列,即_id列。
var ObjectID=require('mongodb').ObjectID;那就这么做
collection.findOne({_id: ObjectID(id)},function(err,user){ //blah blah}https://stackoverflow.com/questions/6867388
复制相似问题