我有一个我想在mongoDB集合中搜索的ID列表。
下面的代码工作正常,但是每个id都有多个DB调用,没有硬编码我无法传递数组列表。
$db->$collection->find( {
"_id" => {
'$in' => [ MongoDB::OID->new( value => "56de679ce64cfa37a61b94f3" ),
MongoDB::OID->new( value => "56d533dee64cfa2a970b2631" )
]
}
} );
但我想动态传递id,就像这样
$db->$collection->find( {
"_id" => {
'$in' => [ @list ]
}
} );
其中@list包含两个元素:
[
'56de679ce64cfa37a61b94f3',
'56d533dee64cfa2a970b2631'
]
如何通过传递动态数组的ID来完成这项工作?
答案 0 :(得分:2)
如果数组ref中的那些东西需要是MongoDB :: OID对象,则需要创建它们。
您可以使用map
动态执行此操作。它就像一个foreach
循环。你应该熟悉它,因为MongoDB中_map_reduce中的 map 是一回事。 Perl中的迭代器变量是$_
。
my @list = (
'56de679ce64cfa37a61b94f3',
'56d533dee64cfa2a970b2631',
);
$db->$collection->find( {
"_id" => {
'$in' => [ map { MongoDB::OID->new( value => $_ ) } @list ]
}
} );