В MongoDB как получить значение в поле для внедренного документа, но запросить на основе другого значения - PullRequest
1 голос
/ 13 февраля 2012

У меня есть такая базовая структура:

> db.users.findOne()
{
    "_id" : ObjectId("4f384903cd087c6f720066d7"),
    "current_sign_in_at" : ISODate("2012-02-12T23:19:31Z"),
    "current_sign_in_ip" : "127.0.0.1",
    "email" : "something@gmail.com",
    "encrypted_password" : "$2a$10$fu9B3M/.Gmi8qe7pXtVCPu94mBVC.gn5DzmQXH.g5snHT4AJSZYCu",
    "last_sign_in_at" : ISODate("2012-02-12T23:19:31Z"),
    "last_sign_in_ip" : "127.0.0.1",
    "name" : "Trip Jameson",
    "sign_in_count" : 100,
    "usertimes" : [
        ...thousands and thousands of records like this one....
        {
            "enddate" : 348268392.115282,
            "idle" : 0,
            "startdate" : 348268382.116728,
            "title" : "My Awesome Title"
        },
    ]
}

Итак, я хочу найти только пользовательские времена для одного пользователя, у которого заголовок был «Мой удивительный заголовок», а затем я хочу посмотреть, какое значение для «бездействия» было в этих записях

Пока все, что я могу понять, это то, что я могу найти всю запись пользователя с помощью поиска:

> db.users.find({'usertimes.title':"My Awesome Title"})

Это просто возвращает всю запись пользователя, что бесполезно для моих целей. Я что-то неправильно понимаю?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Возврат только частично встроенных документов в настоящее время не поддерживается MongoDB. Соответствующая запись пользователя всегда будет возвращена (по крайней мере, с текущей версией MongoDB).

см. Этот вопрос для аналогичной ссылки

Фильтрация вложенных документов в MongoDB

Это корреспондент Jira на пространстве MongoDB

http://jira.mongodb.org/browse/SERVER-142

0 голосов
/ 13 февраля 2012

Использование:

db.users.find({'usertimes.title': "My Awesome Title"}, {'idle': 1});

Могу ли я предложить вам более детально взглянуть на http://www.mongodb.org/display/DOCS/Querying,, это вам все объяснит.

...