Why am I unable to find a record by _id in mongodb

心已入冬 提交于 2019-12-05 18:16:12

问题


I am trying to find a record in mongoDB by it's MongoID "_id" field. I have found examples on how to do it, but can not get it to work. Example:

$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);

It outputs:

MongoCursor (
)

Nothing inside.

I have verified everything else is working by changing the "_id" above to a different field such as "firstName" and passing in a first name and I get back valid data.

Why does this not work?

I have even tried searching with $recID as a string, no difference.

Here is what happens from the mongo shell (though I am not sure if I am querying properly):

>
> 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"})
>

Notice nothing returned for id or _id.


回答1:


Try db.Employee.find({_id:ObjectId("4e209564203d83940f000006")}




回答2:


you can wrap your id around a ObjectID wrapper. This tells mongo db your looking for a specific column the _id column.

var ObjectID=require('mongodb').ObjectID;

then do

collection.findOne({_id: ObjectID(id)},function(err,user){  //blah blah}


来源:https://stackoverflow.com/questions/6867388/why-am-i-unable-to-find-a-record-by-id-in-mongodb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!