Мне было интересно, можно ли использовать оператор «in», как вы можете из оболочки mongo, используя модуль perl MongoDB::Collection. Я пробовал много вещей, но не совсем получил результат, который я ожидаю. Я проверил документы и другие сообщения в stackoverflow, но не могу найти ничего конкретно об этом, если только я что-то не упускаю из виду.
http://docs.mongodb.org/manual/reference/operator/query/in/
Запрос подсчета, который я запускаю через оболочку mongo,
mongo:PRIMARY> db.getCollection("Results").count( { TestClass : "TestClass", TestMethod : { $in: ["method1" , "method2", "method3"] } })
181605
Я пробовал это несколькими разными способами, передавая список в виде массива или хэш-ссылки или предварительно создавая строку...
my $count = $mongo->{collection}->count({
'TimeStamp' => { '$gt' => $ft, '$lt' => $tt },
'TestClass' => $TestClass,
'TestMethod' => { '$in' => [$whitelist->methods] },
'Result' => $result
});
Где находится Свалка $whitelist->methods
$VAR1 = {
'method1' => 1,
'method2' => 1,
'method3' => 1
};
Я долго искал ответ, кто-нибудь знает, может ли драйвер в настоящее время использовать оператор $in таким образом? Для циклического просмотра возвращенных методов из предыдущего запроса и суммирования результатов потребуется дополнительный код.
Единственным другим сообщением о переполнении стека, которое я видел об операторе $in, было это ">Оператор $in mongoDB с _id в perl рекомендует использовать http://api.mongodb.org/perl/current/MongoDB/OID.html, но не думаю, что это актуально в моем примере, так как больше похоже на идентификаторы.
Будем признательны за любую помощь или обсуждение.
[keys %{$whitelist->methods}]
? - person raina77ow   schedule 27.10.2013