【问题标题】:MongoDB Aggregate query with AND condition带有 AND 条件的 MongoDB 聚合查询
【发布时间】:2017-02-22 05:22:34
【问题描述】:

我在 PHP 中有这个 MongoDB 查询:

$data = $collection->aggregate(
    array('$match' => array(
        'PATIENT_ID' => $singoloPatientId
    )),
    array('$group' => array(
        '_id' => '$PATIENT_ID',
        'massi1' => array(
            '$max' => $dnameth_value
        )
    ))
);

有效。现在我想用 AND 添加另一个 where 条件:

experiment = $experimentInput

我该怎么做?

【问题讨论】:

    标签: php mongodb mongodb-query aggregation-framework


    【解决方案1】:

    试试这个

    $data=$collection->aggregate(
        array('$match'=> array(
            '$and' => array(
                'PATIENT_ID'=>$singoloPatientId,
                'experiment'=>$experimentInput
                ))),
        array('$group' => array(
            '_id' => '$PATIENT_ID',
            'massi1' => array(
                '$max' => $dnameth_value
            )
        ))
    )
    

    【讨论】:

    • 非常感谢
    • 如果对你有帮助,别忘了点赞 ;)
    • 我还没有 15 个声望点,然后很遗憾我不能投票。对不起
    • 嗨@mongoDB,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。您不需要任何声誉来接受答案,但没有义务这样做。
    【解决方案2】:

    只需将带有条件的表达式附加到现有的 $match 查询:

    $data = $collection->aggregate(
        array('$match' => array(
            'PATIENT_ID' => $singoloPatientId,
            'experiment' => $experimentInput
        )),
        array('$group' => array(
            '_id' => '$PATIENT_ID',
            'massi1' => array(
                '$max' => $dnameth_value
            )
        ))
    );
    

    来自docs

    MongoDB 在指定逗号时提供隐式AND 操作 分隔的表达式列表。将显式 AND$and 一起使用 当必须使用相同的字段或运算符时,运算符是必需的 在多个表达式中指定。

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 2018-07-09
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2018-08-16
    相关资源
    最近更新 更多