我的文档有点复杂,就像:
{
'_id': 1,
'words':
{
'a':
{
'positions': [1,2,3],
'count':3,
},
'and':
{
'positions': [4, 5],
'count': 2,
}
}
}
我有许多包含非常相同的单词的文档,我想汇总中的所有字段words
。给我像这样:
{
'a': 5 #a's sum count
'and': 6 #and's sum count
}
我读了这篇文章,MongoDB-使用嵌套字段对组合键进行分组,但是不幸的是,结构有所不同,它们的工作是对数组字段而不是嵌套字段进行分组。
有什么建议吗?希望您的回答和帮助,在此先感谢。
您可以尝试以下聚合:
db.col.aggregate([
{
$project: {
wordsAsKeyValuePairs: {
$objectToArray: "$words"
}
}
},
{
$unwind: "$wordsAsKeyValuePairs"
},
{
$group: {
_id: "$wordsAsKeyValuePairs.k",
count: { $sum: "$wordsAsKeyValuePairs.v.count"}
}
}
])
要聚合您的字段,您需要使用$ objectToArray将对象分解为键/值对数组。然后我们只需要展开这样的数组就可以按k分组,即单个单词并将所有计数相加。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句