Is there any performance difference for nested document in mongodb query

mongodb, nested, performance

Solution

It doesn't make a difference You're either doing:

db.collection.findOne({"username":"zhengyi"});

or

db.collection.findOne({"account.username":"zhengyi"});

Read up on the dot notation for embedded documents

Similarly, indexes use the dot notation to reach inside a document:

db.collection.ensureIndex({"username": 1});

Or

db.collection.ensureIndex({"account.username": 1});

Problem

If I create an index for username field, which document is better for query a specific user? The nested one: ``` { account:{ username:'zhengyi', passwd:'zhengyi', friends:[] } dev:{ os:'iOS', ver:'6.0', hw:'iPhone2,1' }, app:{ ver:'1.0', pver:'1.0' } } ``` The unnested one: ``` { username:'zhengyi', passwd:'zhengyi', friends:[], dev:{ os:'iOS', ver:'6.0', hw:'iPhone2,1' }, app:{ ver:'1.0', pver:'1.0' } } ```

Original source