有人可以帮我写下面的查询多个帐号,以便我从收藏夹中一次取多个帐号的“ mt”总和吗?
以下查询仅适用于单个帐号
db.getCollection('xyz').aggregate([
{
$match: {
"try.Ind": "A",
"_id.b": "NA",
"_id.b": "HXYZ",
"_id.c": "12345678",
"_id.d": "AA",
"_id.e": "2018-03-09"
}
},
{
$project: {
"try": 1,
total: {
$sum: {
$map: {
input: {
$filter: {
input: "$try",
cond: {
$and: [
{
$eq: [
"$$this.Ind",
"A"
]
},
{
$lt: [
"$$this.mt",
0.0
]
}
]
}
}
},
"in": "$$this.mt"
}
}
}
}
}
])
我的收藏数据:
/* 1 */
{
"_id" : {
"a" : "NA",
"b" : "HXYZ",
"c" : "12345",
"d" : "CA",
"e" : "2018-03-09",
},
"try" : [
{
"Ind" : "A",
"mt" : 2.0,
},
{
"Ind" : "B",
"mt" : 3.0,
},
{
"Ind" : "A",
"mt" : 4.0,
},
{
"Ind" : "B",
"mt" : 5.0,
},
{
"Ind" : "A",
"mt" : 6.0,
},
{
"Ind" : "B",
"mt" : 7.0,
}
]
}
/* 2*/
{
"_id" : {
"a" : "AA",
"b" : "ACDE",
"c" : "45678",
"d" : "AB",
"e" : "2018-03-09",
},
"try" : [
{
"Ind" : "A",
"mt" : 2.0,
},
{
"Ind" : "B",
"mt" : 3.0,
},
{
"Ind" : "A",
"mt" : 4.0,
},
{
"Ind" : "B",
"mt" : 5.0,
},
{
"Ind" : "A",
"mt" : 6.0,
},
{
"Ind" : "B",
"mt" : 7.0,
}
]
}
/* 3 */
{
"_id" : {
"a" : "BB",
"b" : "BBBY",
"c" : "89012",
"d" : "BA",
"e" : "2004-02-12",
},
"try" : [
{
"Ind" : "A",
"mt" : 2.0,
},
{
"Ind" : "B",
"mt" : 3.0,
},
{
"Ind" : "A",
"mt" : 4.0,
},
{
"Ind" : "B",
"mt" : 5.0,
},
{
"Ind" : "A",
"mt" : 6.0,
},
{
"Ind" : "B",
"mt" : 7.0,
}
]
}
预期输出:
如果Ind =“ A”和mt> 0.0
对于帐户12345,
2.0 + 4.0 + 6.0 = 12
对于89012帐户,
2.0 + 4.0 + 6.0 = 12
以此类推...
输出将在下面出现,
{
{
"_id": {
"a" : "NA",
"b" : "HXYZ",
"c" : "12345",
"d" : "CA",
"e" : "2018-03-09",
},
"total": 12
},{ "_id": {
"a" : "BB",
"b" : "BBBY",
"c" : "89012",
"d" : "BA",
"e" : "2004-02-12",
},
"total" :12
}
}
如何一次性查询多个帐户并一次性从集合中获取所有帐户的总和?
注意:我已经针对单个帐户编写了上述查询。
提前谢谢!