Mongo Db查询多个帐号

时间:2018-07-22 13:41:58

标签: mongodb aggregation-framework

有人可以帮我写下面的查询多个帐号,以便我从收藏夹中一次取多个帐号的“ 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

    }
}

如何一次性查询多个帐户并一次性从集合中获取所有帐户的总和?

注意:我已经针对单个帐户编写了上述查询。

提前谢谢!

0 个答案:

没有答案