Yul*_*ale 1 mongodb mongodb-query aggregation-framework
是否可以根据聚合返回的变量设置条件聚合阶段?
例如
User.aggregate([
// if user has a property verified that returns true run aggregation pipeline
// one. Else run aggregation pipeline 2.
])
Run Code Online (Sandbox Code Playgroud)
当然,您可以通过将$facet与 2 个不同的管道一起使用,并为每个第一阶段放置一个带有属性验证的 $match 阶段。
下面是此类查询的示例:
db.collection.aggregate([
{
"$facet": {
"avgSteps": [
{
"$match": {
hasCar: false
}
},
{
$project: {
steps: {
$avg: "$walks.steps"
}
}
}
],
"sumDistance": [
{
"$match": {
hasCar: true
}
},
{
$project: {
sumKm: {
$sum: "$travels.distance"
}
}
}
],
}
}
])
Run Code Online (Sandbox Code Playgroud)