2014-01-15 4 views
0

Существует colloction, что у нескольких поддокумент за каждый документ следующим образом:Как запрос на некоторых поддокументе MongoDB

db.test.insert(
{ 
    "username" : " user1", 
    "Items" : [ 
     { 
      "name" : "Total", 
      "value" : 53951 
     }, 
     { 
      "name" : "n1", 
      "value" : 5711 
     }, 
     { 
      "name" : "n2", 
      "value" : 5477 
     }, 
     { 
      "name" : "n3", 
      "value" : 11444 
     } 
    ] 
}) 
db.test.insert(
{ 
    "username" : " user2", 
    "Items" : [ 
     { 
      "name" : "Total", 
      "value" : 43951 
     }, 
     { 
      "name" : "n1", 
      "value" : 5011 
     }, 
     { 
      "name" : "n2", 
      "value" : 5117 
     }, 
     { 
      "name" : "n3", 
      "value" : 1444 
     } 
    ] 
}) 
db.test.insert(
{ 
    "username" : " user3", 
    "Items" : [ 
     { 
      "name" : "Total", 
      "value" : 51421 
     }, 
     { 
      "name" : "n1", 
      "value" : 5241 
     }, 
     { 
      "name" : "n2", 
      "value" : 1477 
     }, 
     { 
      "name" : "n3", 
      "value" : 9244 
     } 
    ] 
}) 

Я хочу, чтобы выбрать элементы, которые его название «Total» следующим образом:

{ 
    "username" : " user1", 
    "Items" : [ 
     { 
      "name" : "Total", 
      "value" : 53951 
     } 
    ] 
} 

{ 
    "username" : " user2", 
    "Items" : [ 
     { 
      "name" : "Total", 
      "value" : 43951 
     } 
    ] 
} 

{ 
    "username" : " user3", 
    "Items" : [ 
     { 
      "name" : "Total", 
      "value" : 51421 
     } 
    ] 
} 

Я использовал некоторые запросы, такие как db.test.find({"Items.name":"Total"},{"Items.name":1,"Items.value":1}). Но это не правильно. В любом случае, или я должен изменить структуру данных?

ответ

0
db.test.find({Items:{$elemMatch:{name:'Total'}}}); 

Для получения дополнительной информации проверьте MongoDB docs.

+1

db.test.find ({}, {Items: {$ elemMatch: {name: 'Total'}}}); – irmorteza

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