首页 > 解决方案 > 根据Mongoose中的其他属性返回数组值和分组的匹配记录?

问题描述

我们正在使用带有 NPM 库MongooseNodejs的mongoDB NoSQl 数据库。

我有一个名为“ 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.jsmongodbexpressmongooseaggregation-framework

解决方案


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

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

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


推荐阅读