使用mongodb和PHP从所有关联数组项中返回一个键

时间:2011-08-17 01:46:56

标签: php mongodb

如何使用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')

我想为其中存在的任何广告系列返回标记索引。

2 个答案:

答案 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