2015-06-03 3 views
0

Как подойти к написанию запроса, чтобы вернуть все записи, соответствующие как match.id, так и player.name для следующей коллекции?

{ 
    "match": { 
     "id": 1, 
     "event": { 
      "timestamp": "2015-06-03 15:02:22", 
      "event": "round_stats", 
      "round": 1, 
      "player": { 
       "name": "Jim", 
       "userId": 45, 
       "uniqueId": "BOT", 
       "team": 2 
      }, 
      "shots": 0, 
      "hits": 0, 
      "kills": 0, 
      "headshots": 0, 
      "tks": 0, 
      "damage": 0, 
      "assists": 0, 
      "assists_tk": 0, 
      "deaths": 0, 
      "head": 0, 
      "chest": 0, 
      "stomach": 0, 
      "leftArm": 0, 
      "rightArm": 0, 
      "leftLeg": 0, 
      "rightLeg": 0, 
      "generic": 0 
     } 
    } 
} 

Я попытался его с обеими следующими утверждениями запроса, но не вез - они оба не возвращают результатов:

db.warmod_events.find({ $and: [ { "match.id": 1}, { "player.name": 'Jim' } ] }) 

db.warmod_events.find({ $and: [ { "match.id": 1}, { "event": { "player.name": "Jim" } } ] }) 

Я довольно новый для Монго и каких-либо указаний и объяснений помог бы группе - честно говоря, я решил использовать Mongo для этого проекта, поскольку данные, с которыми я работаю, уже представлены в этой форме (JSON), и, благодаря этому, это казалось хорошей возможностью использовать и учиться Монго.

Я имею в виду документацию на сайте Mongo.

Спасибо всем

ответ

2

Попробуйте следующий запрос:

db.warmod_events.find({ "match.id": 1, "match.event.player.name": 'Jim' }) 

который будет соответствовать документам, где идентификатор матча совпадает с вложенным именем документа игрока.

+1

Удивительный, спасибо за это Chridam! – anditpainsme

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