Есть ли разница в производительности для вложенного документа в запросе mongodb
Если я создаю индекс для поля имени пользователя, какой документ лучше для запроса конкретного пользователя?
Вложенный:
{
account:{
username:'zhengyi',
passwd:'zhengyi',
friends:[]
}
dev:{
os:'iOS',
ver:'6.0',
hw:'iPhone2,1'
},
app:{
ver:'1.0',
pver:'1.0'
}
}
Неустранимый:
{
username:'zhengyi',
passwd:'zhengyi',
friends:[],
dev:{
os:'iOS',
ver:'6.0',
hw:'iPhone2,1'
},
app:{
ver:'1.0',
pver:'1.0'
}
}
Ответы
Ответ 1
Это не имеет значения
Вы либо делаете:
db.collection.findOne({"username":"zhengyi"});
или
db.collection.findOne({"account.username":"zhengyi"});
Прочитайте dot notation для встроенных документов
Аналогично, индексы используют точечную нотацию для доступа внутри документа:
db.collection.ensureIndex({"username": 1});
Или
db.collection.ensureIndex({"account.username": 1});