Доступ к массиву в коллекции mongoDB - PullRequest
2 голосов
/ 24 сентября 2010

У меня есть коллекция следующим образом:

{ "_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 ]

2 голосов
/ 25 сентября 2010
0 голосов
/ 20 ноября 2012

Может быть, попробовать агрегат от Монго 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})})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...