我有 3 个 mongo 集合,它们有一个共同的字段(在每个集合中,该字段采用不同的值,因此不可能有任何连接)。我想总结该字段在每个集合中采用的不同值;类似于:distinct_value_col1 + distinct_value_col2 + distinct_value_col3
这是我试过的:
db.aggregate([
{
'$facet': {
'query1':
db.col1.aggregate([
{
'$group': {
_id: "$field",
count: { $sum: 1 }
}
},
{
'$group': {
_id: null,
distinctCount: { $sum: 1 }
}
}
]).toArray(),
'query2':
db.col2.aggregate([
{
'$group': {
_id: "$field",
count: { $sum: 1 }
}
},
{
'$group': {
_id: null,
distinctCount: { $sum: 1 }
}
}
]).toArray()
}
},
{
'$project': {
total: {
'$add': ["$query1.distinctCount", "$query2.distinctCount"]
}
}
}
])
你知道如何解决这个问题吗?
该查询是 javascript 代码和 JSON 的混合体。聚合函数需要一个对象数组,每个对象代表聚合的一个阶段。
对于您显示的聚合,在客户端使用
distinct
和 sum 可能会更有效,例如:
db.col1.distinct("field").length + db.col2.distinct("field").length