Mongodb 对每个文档数组中的所有相同字段求和 - Map-Reduce
Mongodb sum all the same fields in array foreach document - Map-Reduce
我的数据库中有这样的文档:
{
"first_name": "John",
"last_name": "Bolt",
"account": [
{
"cardnumber": "4844615935257045",
"cardtype": "jcb",
"currency": "CZK",
"balance": 4924.99
},
{
"cardnumber": "3552058835710041",
"cardtype": "jcb",
"currency": "BRL",
"balance": 9630.38
},
{
"cardnumber": "5108757163721629",
"cardtype": "visa-electron",
"currency": "CNY",
"balance": 6574.18
}
}
我的问题是 - 如何分别为每个人计算所有账户的余额?我应该使用这个 Map-Reduce 还是聚合框架?
使用聚合框架。
这将为您提供一个包含两个属性的对象数组,id
和 balance
,其中 id
包含用户名。
db.document.aggregate([{
$unwind: "$account"
}, {
$group: {
_id: {$concat: [ "$first_name", " ", "$last_name" ]},
"balance": {
$sum: "$account.balance"
}
}
}]);
免责声明:未经测试。
Ps:我当然希望这是虚假信息。 Here's another answer 这可能会有所帮助。
我的数据库中有这样的文档:
{
"first_name": "John",
"last_name": "Bolt",
"account": [
{
"cardnumber": "4844615935257045",
"cardtype": "jcb",
"currency": "CZK",
"balance": 4924.99
},
{
"cardnumber": "3552058835710041",
"cardtype": "jcb",
"currency": "BRL",
"balance": 9630.38
},
{
"cardnumber": "5108757163721629",
"cardtype": "visa-electron",
"currency": "CNY",
"balance": 6574.18
}
}
我的问题是 - 如何分别为每个人计算所有账户的余额?我应该使用这个 Map-Reduce 还是聚合框架?
使用聚合框架。
这将为您提供一个包含两个属性的对象数组,id
和 balance
,其中 id
包含用户名。
db.document.aggregate([{
$unwind: "$account"
}, {
$group: {
_id: {$concat: [ "$first_name", " ", "$last_name" ]},
"balance": {
$sum: "$account.balance"
}
}
}]);
免责声明:未经测试。
Ps:我当然希望这是虚假信息。 Here's another answer 这可能会有所帮助。