MongoDB通过比较操作从SUB文档中获取单个计数
我用的是mongoDB我用的是queryMongoDB通过比较操作从SUB文档中获取单个计数,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我用的是mongoDB我用的是query db.getCollection('managements').find({'managers.role':"HR"},{'managers.$':1}) 我得到的结果如下 /* 1 */ { "_id" : ObjectId("1"), "managers" : [ { "id" : "100", "role" : "HR" }, {
db.getCollection('managements').find({'managers.role':"HR"},{'managers.$':1})
我得到的结果如下
/* 1 */
{
"_id" : ObjectId("1"),
"managers" : [
{
"id" : "100",
"role" : "HR"
},
{
"id" : "101",
"role" : "ADMIN"
},
{
"id" : "102",
"role" : "ADMIN"
}
]
}
/* 2 */
{
"_id" : ObjectId("2"),
"managers" : [
{
"id" : "104",
"role" : "ADMIN"
},
{
"id" : "105",
"role" : "HR"
}
,
{
"id" : "106",
"role" : "HR"
}
,
{
"id" : "107",
"role" : "HR"
}
]
}
现在我想获得个人记录,其中角色是HR,计数不止一个,如
{ id:2
count : 3}
您可以使用下面的聚合
db.collection.aggregate([
{ "$match": {
"$expr": {
"$gte": [
{ "$size": {
"$filter": {
"input": "$managers",
"cond": { "$eq": ["$$this.role", "HR"] }
}
}},
2
]
}
}},
{ "$addFields": {
"count": {
"$size": {
"$filter": {
"input": "$managers",
"cond": { "$eq": ["$$this.role", "HR"] }
}
}
}
}}
])