2012-11-15 7 views
17

Jeśli utworzyłem indeks dla pola nazwy użytkownika, który dokument jest lepszy dla zapytania określonego użytkownika?Czy jest jakaś różnica w wydajności dla zagnieżdżonego dokumentu w zapytaniu mongodb

zagnieżdżona jeden:

{ 
     account:{ 
     username:'zhengyi', 
     passwd:'zhengyi', 
     friends:[] 
     } 
     dev:{ 
      os:'iOS', 
      ver:'6.0', 
      hw:'iPhone2,1' 
     }, 
     app:{ 
      ver:'1.0', 
      pver:'1.0' 
     } 
    } 

unnested jeden:

{  
     username:'zhengyi', 
     passwd:'zhengyi', 
     friends:[], 
     dev:{ 
      os:'iOS', 
      ver:'6.0', 
      hw:'iPhone2,1' 
     }, 
     app:{ 
      ver:'1.0', 
      pver:'1.0' 
     } 
    } 

Odpowiedz

13

To nie robi różnicy
Jesteś albo robi:

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

lub

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

Poczytaj na dot notation dla osadzonych dokumentów

Podobnie indeksy użyć notacji kropki dotrzeć w dokumencie:

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

Albo

db.collection.ensureIndex({"account.username": 1}); 
Powiązane problemy