数组中的 Mongodb 聚合匹配值

use*_*376 1 aggregate match mongodb

我正在与 mongo 的餐厅数据库合作

   {
    "_id" : ObjectId("5c66fcf59e184ea712adfba6"),
    "address" : {
        "building" : "97-22",
        "coord" : [ 
            -73.8601152, 
            40.7311739
        ],
        "street" : "63 Road",
        "zipcode" : "11374"
    },
    "borough" : "Queens",
    "cuisine" : "Jewish/Kosher",
    "grades" : [ 
        {
            "date" : ISODate("2014-11-24T00:00:00.000Z"),
            "grade" : "Z",
            "score" : 20
        }, 
        {
            "date" : ISODate("2013-01-17T00:00:00.000Z"),
            "grade" : "A",
            "score" : 13
        }, 
        {
            "date" : ISODate("2012-08-02T00:00:00.000Z"),
            "grade" : "A",
            "score" : 13
        }, 
        {
            "date" : ISODate("2011-12-15T00:00:00.000Z"),
            "grade" : "B",
            "score" : 25
        }
    ],
    "name" : "Tov Kosher Kitchen",
    "restaurant_id" : "40356068"
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用匹配进行过滤。我想检查成绩中是否有任何分数大于 5

db.runCommand({
aggregate: "restaurants",
pipeline : [
{$match: {"grades": {$anyElementTrue: {"score": {$gt:5}}}}}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

"errmsg" : "unknown operator: $anyElementTrue",
Run Code Online (Sandbox Code Playgroud)

谢谢

Man*_*ani 5

尝试使用 $eleMatch

db.restaurants.aggregate([{$match: {"grades": {$elemMatch: {"score": {$gt:5}}}}}])
Run Code Online (Sandbox Code Playgroud)