In MongoDB, how does on get the value in a field for an embedded document, but query based on a different value

◇◆丶佛笑我妖孽 提交于 2019-12-08 04:54:51

问题


I have a basic structure like this:

> 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"
        },
    ]
}

So I want to find only usertimes for a single user where the title was "My Awesome Title", and then I want to see what the value for "idle" was in that record(s)

So far all I can figure out is that I can find the entire user record with a search like:

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

This just returns the entire User record though, which is useless for my purposes. Am I misunderstanding something?


回答1:


Return only partial embedded documents is currently not supported by MongoDB The matching User record will always be returned (at least with the current MongoDB version).

see this question for similar reference

Filtering embedded documents in MongoDB

This is the correspondent Jira on MongoDB space

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




回答2:


Use:

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

May I suggest you take a more detailed look at http://www.mongodb.org/display/DOCS/Querying, it'll explain things for you.



来源:https://stackoverflow.com/questions/9253838/in-mongodb-how-does-on-get-the-value-in-a-field-for-an-embedded-document-but-q

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!