Is there any performance difference for nested doc

2019-04-03 16:51发布

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'
        }
    }

1条回答
你好瞎i
2楼-- · 2019-04-03 17:16

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});
查看更多
登录 后发表回答