2014-09-29 134 views
3

我的架構設計是我想從MongoDB中獲取一些信息,從MongoDB的結果

{ 
     "_id" : "23423q53q45345",  
     "value" : "5942178562002.65", 
     "dataset" : "GDP (current US$)", 
     "data" : [ 
       { 
         "data_name" : "country", 
         "value" : "india" 
       }, 
       { 
         "data_name" : "date", 
         "value" : "2011" 
       } 
     ] 
}, 
{ 
     "_id" : "23423q53qdsfsd5",  
     "value" : "1234238562002.65", 
     "dataset" : "GDP (current US$)", 
     "data" : [ 
       { 
         "data_name" : "country", 
         "value" : "india" 
       }, 
       { 
         "data_name" : "date", 
         "value" : "2012" 
       } 
     ] 
}, 
{ 
     "_id" : "213423q45345",  
     "value" : "6576867562002.65", 
     "dataset" : "GDP (current US$)", 
     "data" : [ 
       { 
         "data_name" : "country", 
         "value" : "us" 
       }, 
       { 
         "data_name" : "date", 
         "value" : "2011" 
       } 
     ] 
}, 
{ 
     "_id" : "4564564545dsfsd5",  
     "value" : "2354353462002.65", 
     "dataset" : "GDP (current US$)", 
     "data" : [ 
       { 
         "data_name" : "country", 
         "value" : "us" 
       }, 
       { 
         "data_name" : "date", 
         "value" : "2012" 
       } 
     ] 
} 

我想印度的數據,2011年

我用這個查詢

db.collection.find({ 
    "data.value": { 
     "$in": [ 
      "india","2011" 
     ] 
    } 
}); 

它返回兩個結果

{ 
     "_id" : "23423q53q45345",  
     "value" : "5942178562002.65", 
     "dataset" : "GDP (current US$)", 
     "data" : [ 
       { 
         "data_name" : "country", 
         "value" : "india" 
       }, 
       { 
         "data_name" : "date", 
         "value" : "2011" 
       } 
     ] 
}, 
{ 
     "_id" : "23423q53qdsfsd5",  
     "value" : "1234238562002.65", 
     "dataset" : "GDP (current US$)", 
     "data" : [ 
       { 
         "data_name" : "country", 
         "value" : "india" 
       }, 
       { 
         "data_name" : "date", 
         "value" : "2012" 
       } 
     ] 
} 

它假設是一個結果

{ 
     "_id" : "23423q53q45345",  
     "value" : "5942178562002.65", 
     "dataset" : "GDP (current US$)", 
     "data" : [ 
       { 
         "data_name" : "country", 
         "value" : "india" 
       }, 
       { 
         "data_name" : "date", 
         "value" : "2011" 
       } 
     ] 
} 

我知道查詢是錯誤的,但如何做到這一點請大家幫我出

回答

1
db.collection.find({ 
    $and: [ 
     {"data.value": "india"}, 
     {"data.value": "2011"} 
    ] 
}); 
+0

非常感謝你的嚮導 – 2014-09-29 20:35:34