我正在使用Kettle,需要计算有多少条目具有一些预期值(内部数组中至少有两个字段)。
例如:
{
"_id":"HY1406",
"accounts": [
{
"should_exist" : 1,
"endpoint" : "0_AD",
"exists" : 0,
"short_login" : "TB6"
},
{
"should_exist" : 1,
"endpoint" : "0_AD",
"exists" : 0,
"short_login" : "TB7"
},
{
"should_exist" : 1,
"endpoint" : "0_AD",
"exists" : 0,
"short_login" : "TB8"
}
]
}
我必须计算有多少文件至少拥有"sould_exist" = 1 AND "exists" = 0
的帐户。
如何使用MongoDB查询执行此操作?
答案 0 :(得分:0)
您需要使用$elemMatch
来匹配数组中嵌入文档的两个条件。获取find()
的光标并调用count()
。
db.collection.find({
accounts : {
$elemMatch : {should_exist : 1, exists : 0}
}
}).count()
或在count()
db.collection.count({
accounts : {
$elemMatch : {should_exist : 1, exists : 0}
}
})
或聚合
db.collection.aggregate([
{
$match : {
accounts : {
$elemMatch : {should_exist : 1, exists : 0}
}
}
},
{
$group : {
_id : "foo",
count : {$sum : 1}
}
}
])