我有一个如下集合:
{ "_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"
}
}
.
.
.
]
}
此人是一个数组,带有提到的字段。 我希望找到具有特定身份和国家的人。只返回那些“人”记录。我该怎么做呢?我正在使用java。结构是否正确?我应该将数组结构更改为其他内容吗?
感谢。
编辑: 当括号改变时,访问规则如何改变,在这种情况下,我使用了[],我可以使用{}。有什么变化?
答案 0 :(得分:2)
答案 1 :(得分:0)
也许尝试从mongo 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})})