Node.js Mongodb-未知顶级运算符:$elemMatch“;

Node.js Mongodb-未知顶级运算符:$elemMatch“;,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我收集了一些文件,如下所示: { "transactionId": 3432423, "reviews": [ { "fromUser": { "userId": "5236aa1acd6e" }, "toUser": { "userId": "0ec8db9544cc" }, "rating": 4.3, "comment": "" }, { "toU

我收集了一些文件,如下所示:

{
  "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",
从文件中:

$elemMatch运算符将包含数组字段的文档与至少一个匹配所有指定查询条件的元素相匹配

db.getCollection('_testCollection').find({  "reviews": {"$elemMatch" : { "$exists": false } }})
$exists:-正确或错误//取决于要求


谢谢

您要使用
$elemMatch
$exists
来确定
审阅
是否为空数组

相反,可以与
[]
进行比较:

db.test.find({reviews: []})
或者使用
$size
运算符:

db.test.find({reviews: {$size: 0}})

您正在使用哪个版本的mongodb版本是3.2.12
db.getCollection(“U testCollection”).find({“reviews”:{“$elemMatch”:{“$exists”:false}}})
必须是这样,因为reviews是关键。在数组中查找@johnyhk是正确的。您不需要使用$elemMatch。@JohnnyHK它不会返回任何结果。我有一份有评论的文件:[]。它没有重复这一点