Intereting Posts

Почему я не могу найти запись _id в mongodb

Я пытаюсь найти запись в mongoDB с помощью поля MongoID «_id». Я нашел примеры, как это сделать, но не могу заставить его работать. Пример:

$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 (хотя я не уверен, правильно ли я запрашиваю):

 > > 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.

Попробуйте db.Employee.find({_id:ObjectId("4e209564203d83940f000006")}

вы можете обернуть свой идентификатор вокруг обертки ObjectID. Это говорит mongo db, что вы ищете конкретный столбец _id.

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

затем сделайте

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