根据Mongoose中的其他属性返回数组值和分组的匹配记录?

Posted

技术标签:

【中文标题】根据Mongoose中的其他属性返回数组值和分组的匹配记录?【英文标题】:return match record of array value and group by other property in 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"
        ,
      

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

提前致谢!

【问题讨论】:

【参考方案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

【讨论】:

你能指导我解决这个问题吗:***.com/questions/63918199/… 完成 - 请检查。我在手机上,所以我现在无法测试。

以上是关于根据Mongoose中的其他属性返回数组值和分组的匹配记录?的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs mongoose根据对象属性选择嵌套数组中的对象

如何根据反应中的状态属性对数组中的元素进行分组?

Mongoose .find 带有 req.params 数组?和 res.json 每个值和计数的数组?

如何查询 mongoose 中数组长度最大的条目?

根据对象属性查询 Mongoose 文档

Mongoose 填充返回的 ObjectId 和空数组