本文介绍了MongoDB通过比较操作从sudocument中获取个人计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用mongoDB我正在使用查询
I am using mongoDB I use query
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且人数不止一个,例如
Now I want to get individual records where role is HR and count is more than one, like
{ id:2
count : 3}
推荐答案
您可以在下面的聚合中使用
You can use below aggregation
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"] }
}
}
}
}}
])
这篇关于MongoDB通过比较操作从sudocument中获取个人计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!