2014-09-29 42 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