MongoDB聚合根据匹配条件项目不同的字段?



我正在使用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 */}}

谁能告诉我我该怎么做。

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

<expression>部件中,您可以使用条件运算符根据条件投影值。 例如

{ $project: {
field: { $switch: {
branches: [
{ case: Condition 1, then: "$field1" },
{ case: Condition 2, then: "$field2" },
...
]
} }
} }

或者更复杂的$cond组合,如果您需要处理满足多个$or条件的情况。

最新更新