Как получить любое значение элемента из mongoDB? - PullRequest
0 голосов
/ 24 января 2012

Предположим, у меня есть следующая коллекция:

{    _id" : ObjectId("4f1d8132595bb0e4830d15cc"), 
    "Data" : "[
            { "id1": "100002997235643", "from": {"name": "Joannah" ,"id": "100002997235643"} , "label" : "test"  } , 
            { "id1": "100002997235644", "from": {"name": "Jon" ,"id": "100002997235644"} , "label" : "test1"  } 
        ]" , 
    "stat" : "true" 
}

Как я могу получить id1, имя, идентификатор, метку или любой другой элемент?

Я могу получить поле _id, DATA (полный массив), но не внутренние элементы в DATA.

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Я не думаю, что вы можете сделать это. Это объясняется здесь .

Если вы хотите получить доступ к определенным полям, то следуйте Документация MongoDB , Вы можете добавить параметр flag в свой запрос, но вам следует изменить дизайн документов, чтобы это было полезно:

Выбор поля

В дополнение к выражению запроса, запросы MongoDB могут принимать некоторые дополнительные аргументы. Например, можно запросить возвращение только определенных полей. Если бы мы просто хотели получить номера социального страхования пользователей с фамилией «Смит», то из оболочки мы могли бы выполнить этот запрос:

// retrieve ssn field for documents where last_name == 'Smith':
db.users.find({last_name: 'Smith'}, {'ssn': 1});

// retrieve all fields *except* the thumbnail field, for all documents:
db.users.find({}, {thumbnail:0});
0 голосов
/ 24 января 2012

Вы не можете запрашивать встроенные структуры. Вы всегда запрашиваете документы верхнего уровня. Если вы хотите запросить отдельные элементы из вашего массива, вам нужно будет сделать эти элементы документами верхнего уровня (поэтому поместите их в свою собственную коллекцию) и поддерживать массив _ids в этом документе.

Тем не менее, если массив не становится очень большим, почти всегда эффективнее просто захватить весь документ и найти соответствующий элемент в вашем приложении.

...