鉴于此类文件:
"_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 :
知道为什么会这样吗?
答案 0 :(得分:2)
在$ elemMatch之前看起来你错过了一些方括号:
db.items.find(
{
"$or": [
{"f": {$elemMatch: {"t": "ry", "v": {$gt: 1980}}}},
{"f": {$elemMatch: {"t": "g", "v": {$in: ["Drama"]}}}}
]
}
)
答案 1 :(得分:1)
你在$ elemMatch周围缺少大括号。