Given a collection like this:..
[ { "_id" : ObjectId("5546329a470000850084a621"), "name": "Joe", "surname": "Smith", "accounts": [ { "_id" : ObjectId("5546329a470000850084a655"), "default": true, "status" : "approved", "activationTime" : ISODate("2013-05-03T14:37:15.025Z") }, { "_id" : ObjectId("5546329a470000850084a688"), "default": true, "status" : "approved", "activationTime" : ISODate("2014-06-03T14:37:15.025Z") } ] }, { "_id" : ObjectId("9546329a470079850084a622"), "name": "Jimmy", "surname": "Brown", "accounts": [ { "_id" : ObjectId("5546329a470790850084a651"), "default": true, "status" : "suspended", "activationTime" : ISODate("2015-02-03T14:37:15.025Z") }, { "_id" : ObjectId("5546329a470019850084a611"), "default": true, "status" : "approved", "activationTime" : ISODate("2015-04-03T14:37:15.025Z") } ] }, ] ... how do I find a document by accounts.N._id? I've tried this...
db.users.find( {}, { "accounts": 0, "accounts": { "$elemMatch": { "_id" : ObjectId("5546329a470019850084a611"), "default": true } } } ) ... but it does't work since I get only the _id of all the documents:
{ "_id" : ObjectId("5546329a470000850084a621") } { "_id" : ObjectId("9546329a470079850084a622") } Am I missing something?
EDIT
The result that I actually need is something like this:
{ "_id" : ObjectId("9546329a470079850084a622"), "name": "Jimmy", "surname": "Brown" } For instance, I need to find by accounts.N._id but without showing the nested document itself.