Почему я не могу найти запись _id в mongodb - PullRequest
10 голосов
/ 29 июля 2011

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

$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 в виде строки, без разницы.

Вот что происходит с оболочкой Монго (хотя я не уверен, правильно ли я запрашиваю):

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

Ответы [ 2 ]

26 голосов
/ 29 июля 2011

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

4 голосов
/ 06 мая 2014

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

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

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

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