我有一个 MongoDB 集合,其中的文档如下所示:
{
'_id': 'doc1',
'store_A': {'apples': 50, 'oranges':20},
'store_B': {'oranges': 15}
}
{
'_id': 'doc2',
'store_A': {'oranges':10},
'store_B': {'apples': 15}
}
我如何编写一个聚合命令来为我提供集合中所有文档中每个商店的水果总数,而不枚举所有允许的水果种类?
结果应如下所示:
{
'_id': 'Result',
'store_A_total': {'apples': 50, 'oranges': 30},
'store_B_total': {'apples': 15, 'oranges': 15}
}
此查询有效,但必须明确指定所有水果类型:
db.collection.aggregate(
{'$group': {'_id': 'Result',
'store_A_apples': {'$sum': '$Store_A.apples'},
'store_A_oranges': {'$sum': '$store_A.oranges'},
'store_B_apples': {'$sum': '$store_B.apples'},
'store_B_oranges': {'$sum': '$store_B.oranges'}
}},
{'$project': {
'store_A': {'apples': '$store_A_apples','oranges': '$store_A_oranges'},
'store_B': {'apples': '$store_B_apples','oranges': '$store_B_oranges'}
}})
有没有更好的方法来构建这些文档以促进这种类型的查询?