{
_id:1, members: [
{
name:"John",
status:"A"
},
{
name:"Alex",
status:"D"
},
{
name:"Jack",
status:"A"
},
{
name:"Robin",
status:"D"
}
]}
那是Channel document
。
现在我需要count
成员数组中status equal to 'A'
的所有元素。
例如,上述文档中有2个成员status 'A'
。
我怎样才能做到这一点?
答案 0 :(得分:1)
您可以使用mongodb-count来获得所需的结果。
返回与find()查询匹配的文档数。 db.collection.count()方法不执行find()操作,而是计算并返回与查询匹配的结果数。
所以你的查询将是
var recordcount = db.collName.count({"members.status":"A"});
现在recordCount
将是与{"members.status":"A"}
查询匹配的记录数。
答案 1 :(得分:0)
这是你的Json文件
{
"_id" : ObjectId("575915653b3cc43fca1fca4c"),
"members" : [
{
"name" : "John",
"status" : "A"
},
{
"name" : "Alex",
"status" : "D"
},
{
"name" : "Jack",
"status" : "A"
},
{
"name" : "Robin",
"status" : "D"
}
]
}
并且你想要成员数组中所有元素的数量 状态等于'A'。
你必须尝试这个才能找到你的点数
db.CollectionName.aggregate([{
"$project": {
"members": {
"$filter": {
"input": "$members",
"as": "mem",
"cond": {
"$eq": ["$$mem.status", "A"]
}
}
}
}
}, {
"$project": {
"membersize": {
"$size": "$members"
}
}
}]).pretty()
你发现你的答案就像那个{“_ id”: ObjectId(“575915653b3cc43fca1fca4c”),“membersize”:2}
尝试旧版本......
db.CollectionName.aggregate([{"$unwind":"$members"},{"$match":{"members.status":"A"}},{"$group":{_id:"$_id","memberscount":{"$sum":1}}}]).pretty()
{ "_id" : ObjectId("575915653b3cc43fca1fca4c"), "memberscount" : 2 }
答案 2 :(得分:-1)
这是你的Json文件
{
"_id" : ObjectId("575915653b3cc43fca1fca4c"),
"members" : [
{
"name" : "John",
"status" : "A"
},
{
"name" : "Alex",
"status" : "D"
},
{
"name" : "Jack",
"status" : "A"
},
{
"name" : "Robin",
"status" : "D"
}
]
}
并且你想要成员数组中所有元素的数量 状态等于'A'。
你必须尝试这个才能找到你的点数
db.CollectionName.aggregate([{
"$project": {
"members": {
"$filter": {
"input": "$members",
"as": "mem",
"cond": {
"$eq": ["$$mem.status", "A"]
}
}
}
}
}, {
"$project": {
"membersize": {
"$size": "$members"
}
}
}]).pretty()
你发现你的答案就像那个{“_ id”: ObjectId(“575915653b3cc43fca1fca4c”),“membersize”:2}