您如何从 mongoDB aggregate() 查询中 return 获得多个结果?
How do you return multiple results from a mongoDB aggregate() query?
这是一个运行匹配的查询,然后 returns 特定字段中唯一条目的数量:
db.sequences.aggregate([{$match: {id: 5}}, {$group : {_id : "$field"} }, {$group: {_id:1, count: {$sum : 1 }}}])
但是,如果我想要 return 多个值,例如原始匹配聚合中所有文档的计数、原始匹配中的前 50 个文档以及唯一条目的数量,该怎么办相同匹配文档集的 field2 的?
我能否编写 1 个 return所有这些值的聚合查询?
您需要进行两个单独的 $group
阶段。先$group
由filed
字段,然后$push
将得到的文档放入一个数组中,同时从每个文档中累加count
,得到总和。
db.sequences.aggregate(
[
{$match: {id: 5}},
{$group :
{
_id : "$field",
count: {$sum: 1}
}
},
{$group :
{
_id : null,
totalNumberOfMatches: {$sum: '$count'},
totalNumberOfUniqueMatches: {$sum: 1},
uniqueMatchesField:
{
$push:
{
field: '$_id',
count: '$count'
}
}
}
},
]
)
这是一个运行匹配的查询,然后 returns 特定字段中唯一条目的数量:
db.sequences.aggregate([{$match: {id: 5}}, {$group : {_id : "$field"} }, {$group: {_id:1, count: {$sum : 1 }}}])
但是,如果我想要 return 多个值,例如原始匹配聚合中所有文档的计数、原始匹配中的前 50 个文档以及唯一条目的数量,该怎么办相同匹配文档集的 field2 的?
我能否编写 1 个 return所有这些值的聚合查询?
您需要进行两个单独的 $group
阶段。先$group
由filed
字段,然后$push
将得到的文档放入一个数组中,同时从每个文档中累加count
,得到总和。
db.sequences.aggregate(
[
{$match: {id: 5}},
{$group :
{
_id : "$field",
count: {$sum: 1}
}
},
{$group :
{
_id : null,
totalNumberOfMatches: {$sum: '$count'},
totalNumberOfUniqueMatches: {$sum: 1},
uniqueMatchesField:
{
$push:
{
field: '$_id',
count: '$count'
}
}
}
},
]
)