我有一个要在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的动态数组来完成这项工作?
如果数组引用中的那些东西需要是MongoDB :: OID对象,则需要创建这些对象。
您可以用来map
动态地做到这一点。就像一个foreach
循环。您应该熟悉它,因为MongoDB中_map_reduce中的地图是一回事。Perl中的iterator变量为$_
。
my @list = (
'56de679ce64cfa37a61b94f3',
'56d533dee64cfa2a970b2631',
);
$db->$collection->find( {
"_id" => {
'$in' => [ map { MongoDB::OID->new( value => $_ ) } @list ]
}
} );
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句