如何在 MongoDB 中按一个字段分组并对一个对象(保留输出结构)中的字段求和?
How can I group by one field and sum fields in one object(output structure preserved) in MongoDB?
我有两个文件
_id:...
word: Casper
something: Object
som1: 1
som2: 2
_id:...
word: Casper
something: Object
som1: 4
som2: 5
我想分组并得到这样的东西:
_id: Object
word: Casper
something: Object
som1: 5
som2: 7
求和字段的结构不应该改变,仍然是一个对象。
但我是 mongo 的新手,不知道该怎么做。
我该怎么做?
要在 Mongodb 中分组,您应该使用 aggregate():
db.collectionName.aggregate([
{$match:{
"word": "Casper"
}},
{
$group:
{
_id:{
"word" : "$word"
},
"som1" : {$sum:"$something.som1"},
"som2" : {$sum:"$something.som2"}
}
},
{
$addFields:{
"something":{
"som1": "$som1",
"som2": "$som2"
}
}
},
{
$project:{
"som1":0,
"som2":0
}
}
])
我有两个文件
_id:...
word: Casper
something: Object
som1: 1
som2: 2
_id:...
word: Casper
something: Object
som1: 4
som2: 5
我想分组并得到这样的东西:
_id: Object
word: Casper
something: Object
som1: 5
som2: 7
求和字段的结构不应该改变,仍然是一个对象。 但我是 mongo 的新手,不知道该怎么做。 我该怎么做?
要在 Mongodb 中分组,您应该使用 aggregate():
db.collectionName.aggregate([
{$match:{
"word": "Casper"
}},
{
$group:
{
_id:{
"word" : "$word"
},
"som1" : {$sum:"$something.som1"},
"som2" : {$sum:"$something.som2"}
}
},
{
$addFields:{
"something":{
"som1": "$som1",
"som2": "$som2"
}
}
},
{
$project:{
"som1":0,
"som2":0
}
}
])