我有一个集合,其中包含以下一些文档,
{
"transactionId": 3432423,
"reviews": [
{
"fromUser": {
"userId": "5236aa1acd6e"
},
"toUser": {
"userId": "0ec8db9544cc"
},
"rating": 4.3,
"comment": ""
},
{
"toUser": {
"userId": "5236aa1acd6e",
"email": "yourlife@gmail.com",
"firstName": "your",
"lastName": "life"
},
"fromUser": {
"userId": "0ec8db9544cc",
"email": "mylife@gmail.com",
"firstName": "my",
"lastName": "life"
},
"rating": 4.3,
"comment": ""
}
]
}
我需要检查文档中是否存在子文档审阅。我使用过这个查询,
db.getCollection('_testCollection').find({ "$elemMatch": { "reviews": { "$exists": false } }})
它抛出错误说,
"errmsg" : "unknown top level operator: $elemMatch",
答案 0 :(得分:2)
您想要使用$elemMatch
或$exists
来确定reviews
是否为空数组。
相反,要么与[]
进行比较:
db.test.find({reviews: []})
或使用$size
运算符:
db.test.find({reviews: {$size: 0}})
答案 1 :(得分:0)
来自文档: -
$ elemMatch 运算符匹配包含数组字段的文档,其中至少有一个元素符合所有指定的查询条件。
db.getCollection('_testCollection').find({ "reviews": {"$elemMatch" : { "$exists": false } }})
$ exists: - true或false //取决于要求
由于