使用 mongoID 数组查询集合
Querying a collection with an array of mongoID
我有以下代码:
// company_ids is an array of mongo IDs
// company_id is an array (with only 1 element) of mongo ID
foreach($company_ids as $company_id){
$results = Archive::where("billing.company._id", 'all', array($company_id))->get();
...
这是Log::info(print_r($company_ids, true))
的输出
[2016-10-22 02:41:27] production.INFO: Array
(
[0] => 57515764b91a8c4d008b45d1
[1] => 57515764b91a8c4d008b45d6
[2] => 57515764b91a8c4d008b45db
[3] => 57515764b91a8c4d008b45e0
...
)
如何使用 company_ids
直接查询 Archive
集合并消除对 foreach
循环的需要?
根据图书馆的readme:
$results = Archive::whereIn('billing.company._id', $company_ids)->get();
(我不清楚数组 $company_ids 是什么,但我认为它需要是 MongoID 数组:但这也取决于您使用的底层库,Mongo or MongoDB, 因为两者都得到图书馆的支持)
$company_ids = [
new mongoID('57515764b91a8c4d008b45d1'),
new mongoID('57515764b91a8c4d008b45d6'),
new mongoID('57515764b91a8c4d008b45db'),
new mongoID('57515764b91a8c4d008b45e0'),
]
@Robbie 回答中的一个小更新。无需使用 MongoIds
数组,只需使用字符串数组即可。我仅将此与 laravel-jenessengers
一起使用
$company_ids = [
'57515764b91a8c4d008b45d1',
'57515764b91a8c4d008b45d6',
'57515764b91a8c4d008b45db',
'57515764b91a8c4d008b45e0'
]
$results = Archive::whereIn('billing.company._id', $company_ids)->get();
我有以下代码:
// company_ids is an array of mongo IDs
// company_id is an array (with only 1 element) of mongo ID
foreach($company_ids as $company_id){
$results = Archive::where("billing.company._id", 'all', array($company_id))->get();
...
这是Log::info(print_r($company_ids, true))
[2016-10-22 02:41:27] production.INFO: Array
(
[0] => 57515764b91a8c4d008b45d1
[1] => 57515764b91a8c4d008b45d6
[2] => 57515764b91a8c4d008b45db
[3] => 57515764b91a8c4d008b45e0
...
)
如何使用 company_ids
直接查询 Archive
集合并消除对 foreach
循环的需要?
根据图书馆的readme:
$results = Archive::whereIn('billing.company._id', $company_ids)->get();
(我不清楚数组 $company_ids 是什么,但我认为它需要是 MongoID 数组:但这也取决于您使用的底层库,Mongo or MongoDB, 因为两者都得到图书馆的支持)
$company_ids = [
new mongoID('57515764b91a8c4d008b45d1'),
new mongoID('57515764b91a8c4d008b45d6'),
new mongoID('57515764b91a8c4d008b45db'),
new mongoID('57515764b91a8c4d008b45e0'),
]
@Robbie 回答中的一个小更新。无需使用 MongoIds
数组,只需使用字符串数组即可。我仅将此与 laravel-jenessengers
$company_ids = [
'57515764b91a8c4d008b45d1',
'57515764b91a8c4d008b45d6',
'57515764b91a8c4d008b45db',
'57515764b91a8c4d008b45e0'
]
$results = Archive::whereIn('billing.company._id', $company_ids)->get();