2010-09-24 87 views
2

访问阵列I有一个集合如下:在MongoDB中收集

{ "_id" : ObjectId("4c9c63a95d765f996ca8dff4"), "count" : "28", "id" : "5565", "person" : [ 
    { 
     "id" : "5435df", 
     "name" : { 
      "fn" : "abc", 
      "ln" : "xyz" 
     }, 
     "sex" : "m", 
     "location" : { 
      "country" : "india" 
     } 

    }, 
    { 
     "id" : "dfg434", 
     "name" : { 
      "fn" : "def", 
      "ln" : "pqr" 
     }, 
     "sex" : "f", 
     "location" : { 

      "country" : "india" 
     } 

    } 
. 
. 
. 

] 
} 

的人是一个数组,与上述领域。 我希望找到具有特定ID和国家的人。只有那些“人”记录应该被退回。我该如何去做呢?我正在使用java。结构是否正确?我应该改变数组结构,变成别的东西吗?

谢谢。

编辑: 当括号改变时,访问规则如何改变,在这种情况下,我已经使用[],我可以使用{}。有什么变化?

回答

2
+0

没有帮助:(你有另一个例子(在Java),或者可能在JIRA错误证明? ?它不可能TIA – 2010-09-25 07:09:25

+0

使用foreach对数组的每个嵌套的作品,但我想,是返回一个特定块,当它里面的一些数据是我想要的东西如:。 person.country ==“印度”应该返回与ID块:5435df和id:dfg434 – 2010-09-25 08:15:41

+0

你会希望把它们放到一个数组这种情况下,看到这个线程我运。与他们的论坛上的开发人员一起。 http://groups.google.com/group/mongodb-user/browse_thread/thread/eaf5a1e2a5817b61/868d8435bdaf57f0?q=#868d8435bdaf57f0 – luckytaxi 2010-09-25 12:00:28

0

也许尝试从蒙戈V2.2 +汇总:

fagg=db.collection.aggregate([{$unwind: "$person"}, 
    {$project: {name:"$person.name",sex:"$person.sex"}}, 
    {$match: {sex: "f"}}]) 

    fagg.result.forEach(function(o){ 
    db.person.insert({name: o.name, sex: o.sex})})