vaibhav
vaibhav

Reputation: 4103

Need Help on Mongo DB query

There is an existing person collection in the system which is like:

{
    "_id" : ObjectId("536378bcc9ecd7046700001f"),
    "engagements":{
       "5407357013875b9727000111" : {
            "role" : "ADMINISTRATOR",
        },
       "5407357013875b9727000222" : {
            "role" : "DEVELOPER",
        }
    }
}

So that multiple user objects can have the same engagement with a specific role, I need to fire a query in this hierarchy where I can get all the persons which have a specific engagement in the engagements property of person collection.

I want to get all the persons which have 5407357013875b9727000222 in the engagements.

I know $in operator could be used but the problem is that I need to compare the keys of the sub Json engagements.

Upvotes: 0

Views: 38

Answers (1)

Sergio Tulentsev
Sergio Tulentsev

Reputation: 230521

I think it's as simple as this:

 db.users.find({'engagements.5407357013875b9727000222': {$exists: true}})

If you want to match against multiple engagement ids, then you'll have to use $or. Sorry, no $in for you here.

Note, however, that you need to restructure your data, as this one can't be indexed to help this concrete query. Here I assume you care about performance and this query is used often enough to have impact on the database.

Upvotes: 1

Related Questions