【问题标题】:return match record of array value and group by other property in Mongoose?根据Mongoose中的其他属性返回数组值和分组的匹配记录?
【发布时间】:2020-12-26 17:15:40
【问题描述】:

我们正在使用 mongoDB NoSQl 数据库和 NPM 库 MongooseNodejs

我有一个名为“USERS”的集合,文档格式如下:

{user_number: 12, region:"Pune"},
{user_number: 13, region:"Mumbai"},
{user_number: 14, region:"Mumbai"},
{user_number: 15, region:"Punjab"},
{user_number: 16, region:"Delhi"},
{user_number: 17, region:"Pune"}

我有 user_Number=[12,13,14,15] 数组,所以我想返回 user_numbergroup by region 的匹配记录。 user_number 数组是动态的。

预期输出是:

{"data":{
 {
            "_id": {
                "region": "pune"
            },
            "count": 1,
            "region": "Pune"
        },
        {
            "_id": {
                "region": "Mumbai"
            },
            "count": 2,
            "region": "Mumbai"
        },
        {
            "_id": {
                "region": "Punjab"
            },
            "count": 1,
            "region": "Punjab"
        },
      }
}

你能请人用最好的方法指导我吗?

提前致谢!

【问题讨论】:

    标签: node.js mongodb express mongoose aggregation-framework


    【解决方案1】:

    您可以在您的 aggeration 管道中使用 $match$group 来执行此操作:

    db.collection.aggregate([
      {
        "$match": {
          user_number: {
            $in: [12,13,14,15]
          }
        }
      },
      {
        $group: {
          _id: "$region",
          count: {
            $sum: 1
          }
        }
      }
    ])
    

    你可以在 mongoplayground 上试试这个:https://mongoplayground.net/p/tXpwtngnU1B

    【讨论】:

    猜你喜欢
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2020-06-18
    相关资源
    最近更新 更多