2016-01-15 3 views
0

У меня есть JSON схема, которая выглядит следующим образом:Как запросить вложенный объект в MongoDB?

{ 
    "_id" : ObjectId("5692a3e124de1e0ce2dfda22"), 
    "title" : "A Decade of Decadence, Pt. 2: Legacy of Dreams", 
    "year" : 2013, 
    "rated" : "PG-13", 
    "released" : ISODate("2013-09-13T04:00:00Z"), 
    "runtime" : 65, 
    "countries" : [ 
      "USA" 
    ], 
    "genres" : [ 
      "Documentary" 
    ], 
    "director" : "Drew Glick", 
    "writers" : [ 
      "Drew Glick" 
    ], 
    "actors" : [ 
      "Gordon Auld", 
      "Howie Boulware Jr.", 
      "Tod Boulware", 
      "Chen Drachman" 
    ], 
    "plot" : "A behind the scenes look at the making of A Tiger in the Dark: The Decadence Saga.", 
    "poster" : null, 
    "imdb" : { 
      "id" : "tt2199902", 
      "rating" : 8, 
      "votes" : 50 
    }, 
    "awards" : { 
      "wins" : 0, 
      "nominations" : 0, 
      "text" : "" 
    }, 
    "type" : "movie" 
} 

Я пытаюсь найти фильм выпущен в 2013 году, который рассчитан PG-13 и не выиграл ни одного награды. Я попробовал следующий запрос в моей Монгольской раковине, но не повезло:

db.movieDetails.find({rated: "PG-13", year:2013, awards: { wins : 0}}) 

Любые идеи?

ответ

2

Из документации:

Когда поле содержит встроенный документ, запрос может либо sp ecify точного совпадения встроенного документа или задать соответствие по отдельным полям во встроенном документе не используя dot notation

db.movieDetails.find({ "rated": "PG-13", "year": 2013, "awards.wins" : 0 }) 
0

, если этот рейтинг PG-13 запрос будет работать для вас:

db.movieDetails.find({"rated": "PG-13"})

тогда я хотел бы попробовать что-то вроде этого:

db.movieDetails.find({$and: [{"rated": "PG-13"}, {"year": 2013}, {"awards": { "wins" : 0}}]})

+0

не повезло. Но первый работает. – dikshant

+0

делает это без награды? 'db.movieDetails.find ({$ and: [{" rated ":" PG-13 "}, {" year ": 2013}]})' – yftse

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