2015-06-15 3 views
-1

Учитывая этот вид документов:Запрос не работает - 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 
     } 
    ] 
} 

Я хочу запросить для тех, которые «гу» больше, чем 1980, и который «г» (жанр) является «Драма» или «Thriller ».

Я сделал этот запрос:

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

) 

Но это не работает:

Error: Line 4: Unexpected token :

Любая идея, почему это?

+2

Вы пропустили '{' после '$ elemMatch'' {"f": {"$ elemMatch": {"t": .... ' – Yogesh

ответ

2

Похоже, вы пропустили некоторые скобки до $ elemMatch:

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

) 
+0

Где мой ум ... Спасибо! :) – borjagvo

1

Вы отсутствуют фигурные скобки вокруг $ elemMatch.

Смежные вопросы