Во-первых, убедитесь, что вы используете правильный синтаксис. Ваш первый пример недействителен для Perl-кода, поскольку вы включаете кусок JSON в качестве параметра запроса.
Во-вторых, если эти значения идентификатора являются объектами ObjectID, то вам нужно сделать объекты OID, чтобы отличать их от обычных строк. И не забудьте использовать одинарные кавычки (''
) около $in
, иначе Perl попытается интерполировать $in
как переменную (которая, по-видимому, ничего не имеет в ней).
Так что я предполагаю, что вы хотите сделать что-то вроде этого:
$db->$collection->find({
"_id" => {
'$in' => [ MongoDB::OID->new(value => "4f520122ecf6171327000137"),
MongoDB::OID->new(value => "4f4f49c09d1bd90728000034")
]
}
});
Edit: Кроме того, с помощью автозагружаемых имен методов для получения коллекций были устаревшим на некоторое время. Вам лучше использовать $db->get_collection("collection name")->find(...)
Чтобы помочь нам лучше ответить, вы должны были показать нам, что запрос корректно работает в оболочке mongo, и доказал, что у вас есть два документа с данными ObjectIds. –