как использовать "найти" для поиска "_id => OBjectID (" id ")" в API Perl - PullRequest
8 голосов
/ 11 января 2011

Мне нужно найти своего рода "_id" в моем Mongo, я могу сделать это с помощью оболочки Mongo, и я не могу сделать это с помощью Perl API.

Я пытаюсь это сделать (оболочка монго):

./mongo
use my_db
db.my_collection.find({_id : ObjectId("4d2a0fae9e0a3b4b32f70000")})

Это работает! (Возвращается), но я не могу сделать это с помощью Perl API,

$mongo->my_db->my_collection(find({_id => "ObjectId(4d2a0fae9e0a3b4b32f70000"}));

Не работает, потому что «ObjectId» не является строкой, но если вы это сделаете,

./mongo
use my_db
db.my_collection.find({_id : "ObjectId(4d2a0fae9e0a3b4b32f70000)"})

тоже не работает, наверное Perl API это делает ^

Теперь я должен знать, как я это делаю:

db.my_collection.find({_id : ObjectId("4d2a0fae9e0a3b4b32f70000")})

с использованием Perl API.

Ответы [ 3 ]

8 голосов
/ 30 марта 2011

Реализация, похоже, изменилась.

$mongo->my_db->my_collection(
  find({ _id => MongoDB::OID->new(value => "4d2a0fae9e0a3b4b32f70000")})
);
1 голос
/ 12 января 2011

Я нашел решение, вы должны сделать:

$mongo->my_db->my_collection(find({ _id => $mongo->oid("4d2a0fae9e0a3b4b32f70000")}));
0 голосов
/ 21 сентября 2011

При чтении MongoDB :: Учебное пособие

Использование MongoDB загружает большинство пакетов, которые вам понадобятся для взаимодействия с MongoDB: MongoDB :: Connection, MongoDB :: Database, MongoDB :: Collection и MongoDB :: Cursor. Чтобы использовать специальные типы данных Mongo (см. MongoDB :: DataTypes), их необходимо включать отдельно. Поэтому, как правило, чтобы использовать Mongo, вы начинаете как минимум с:

use MongoDB;
use MongoDB::OID;

Тогда вы можете просто сделать это в своем коде:

$db->$collection->find_one({ _id => $id })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...