MongoDB聚合基于匹配条件项目不同的字段?

时间:2018-06-18 10:39:47

标签: mongodb aggregation-framework

我正在使用aggregation在MongoDB中编写一个查询,这样如果condition 1匹配,那么我想投影一些字段,当condition 2匹配时,我想要投影一些不同的字段,当第三个condition 3到达我想要投射其他一些不同的领域。

我的查询如下

{
    $match: {
        $and: [
            {
                {field_a: "henesa"}
            },
            {
                $expr: {
                    $or: [
                        { Condition 1}, {Condition 2}, {condition 3}
                    ]
                }
            }
        ]

    }
},
{$project: { /* Here How To Decide which params to send */}}

任何人都可以告诉我我该怎么做。

1 个答案:

答案 0 :(得分:2)

您可以在投影阶段使用<field>: <expression> <expression>语法。

{ $project: { field: { $switch: { branches: [ { case: Condition 1, then: "$field1" }, { case: Condition 2, then: "$field2" }, ... ] } } } } 部分,您可以使用$projection根据您的条件投放值。 E.g。

$or

如果您需要在满足多个var jsonData = JSON.parse(responseBody); var token = jsonData._token; postman.setEnvironmentVariable("token", token); 条件时处理案例,则可以使用更复杂的conditional operators组合。