node.js - 根据Mongoose中的其他属性返回数组值和分组的匹配记录?
问题描述
我们正在使用带有 NPM 库Mongoose和Nodejs的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_number与group 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"
},
}
}
你能请有人用最好的方法指导我吗?
提前致谢!
解决方案
您可以在您的 aggeration 管道中使用$match
and来执行此操作:$group
db.collection.aggregate([
{
"$match": {
user_number: {
$in: [12,13,14,15]
}
}
},
{
$group: {
_id: "$region",
count: {
$sum: 1
}
}
}
])
你可以在 mongoplayground 上试试这个:https ://mongoplayground.net/p/tXpwtngnU1B
推荐阅读
- sql - 如何在连接到父表上数据 A 的子表上保留数据 B,同时删除父表上的数据 A?
- sql - 如何通过 Postgres 11 函数(存储过程)在某个时区返回 $TIMESTAMP 或之前的最新行?
- python - 使用正则表达式作为课程目录的 Python 解析器
- bash - 如何用脚本“捕捉”突出显示的文本?
- angular - 如何在 Angular 中显示从后端到前端的错误验证
- ruby-on-rails - 带有graphql的“nil:NilClass的未定义方法`[] ='”
- scala - 何时对递归函数/方法使用辅助递归函数/方法
- c# - 在 ThenInclude 上过滤,使用 EntityFrameworkPlus IncludeFilter
- node.js - Puppeteer 无法在 GoormIDE 中启动浏览器进程
- javascript - 无法检索 Stripe 结帐会话(未定义检索功能)