查询无法正常工作 - MongoDB

时间:2015-06-15 09:56:35

标签: mongodb

鉴于此类文件:

 "_id" : ObjectId("5461c8f0426f727f16010000"),
    "f" : [ 
        {
            "t" : "ry",
            "v" : 1972
        }, 
        {
            "t" : "g",
            "v" : [ 
                "Crime", 
                "Drama"
            ]
        }, 
        {
            "t" : "ml",
            "v" : "English"
        }, 
        {
            "t" : "k",
            "v" : "movie"
        }, 
        {
            "t" : "ai",
            "v" : 972353
        }, 
        {
            "t" : "ec",
            "v" : 46
        }, 
        {
            "t" : "rel",
            "v" : true
        }
    ]
}

我想查询那些" ry"大于1980年,其中" g" (类型)是"戏剧"或者"惊悚"。

我编写了这个查询:

db.items.find( 
    {
        "$or": [
            {"f": $elemMatch: {"t": "ry", "v": {$gt: 1980}}},
            {"f": $elemMatch: {"t": "g", "v": {$in: ["Drama"]}}}
        ]
    }

)

但它不起作用:

Error: Line 4: Unexpected token :

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

在$ elemMatch之前看起来你错过了一些方括号:

db.items.find( 
    {
        "$or": [
            {"f": {$elemMatch: {"t": "ry", "v": {$gt: 1980}}}},
            {"f": {$elemMatch: {"t": "g", "v": {$in: ["Drama"]}}}}
        ]
    }

)

答案 1 :(得分:1)

你在$ elemMatch周围缺少大括号。