如何使用mongodb集合中的关联数组中获取所有键 PHP驱动程序。
文件:
[_id] => 1
[campaigns] => Array (
[4e3b924d18153] => Array (
[name] => Campaign One,
[flag] => 1,
),
[4e3b924d18154] => Array (
[name] => Campaign Two,
[flag] => 1,
),
[4e3b924d18155] => Array (
[name] => Campaign Three,
),
)
我需要从关联数组广告系列中获取任何标记字段。 国旗可能不一定存在。
基本上,我想知道哪些广告系列设置了标记。
我可以使用以下查询,但它只返回第一个广告系列的标记键
array('_id' => array('$in' => $projectIds)), array('campaigns.0.flag')
我想为其中存在的任何广告系列返回标记索引。
答案 0 :(得分:0)
如果您需要使用php执行此操作,以下行可以帮助您:
$flaged_compaigns = array();
foreach ($campaigns as $compaign->$data) {
if (isset($data['flag']) and $data['flag']) {
$flaged_compaigns[$compaign] = $data;
}
}
答案 1 :(得分:0)
您可以在db中运行查询时执行此操作。 Init mongo并获取您的收藏。 运行find符合以下条件:
array('_id' => array('$in' => $projectIds), 'flag' => array('$exists' => true)).
版本1.8.x或更早版本中存在一个不能使用此字段'flag'的索引的缺点。 请参阅http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24exists。