访问mongoDB集合中的数组

时间:2010-09-24 13:19:19

标签: 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"
        }

    }
.
.
.

]
}

此人是一个数组,带有提到的字段。 我希望找到具有特定身份和国家的人。只返回那些“人”记录。我该怎么做呢?我正在使用java。结构是否正确?我应该将数组结构更改为其他内容吗?

感谢。

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

2 个答案:

答案 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})})