MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Indeksy MongoDB na poddokumentach nie są używane na podstawie składni zapytania

Myślę, że zrozumiałem to po sprawdzeniu dokumentów mongo. Zasadniczo jest różnica w semantyce między tymi dwoma. Zasadniczo w pierwszej formie zapytania {c: {d: d1}} , mongo zakłada, że ​​określasz całość poddokument. Więc jeśli masz poddokument {c: {d: d1, e: e1}} , nie będzie pasować.

OTOH, druga forma zapytania {'c.d': d1} oznacza, że ​​określasz dopasowanie tylko w jednym polu w poddokumencie. Byłoby to zgodne, nawet jeśli poddokument zawiera inne pola lub całe poddokumenty.

Ta różnica rozciąga się na indeks. _ensureIndex({c: 1}) i _ensureIndex({'c.d': 1}) to dwa różne indeksy i chociaż pierwszy indeksuje cały dokument podrzędny, nie będzie on używany, jeśli zapytanie dotyczy pojedynczego pola z c.d notacja.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Usuwanie elementu tablicy w mongoDB na podstawie pozycji elementu

  2. Dynamiczny predykat Linq zgłasza błąd nieobsługiwanego filtra ze sterownikiem C# MongoDB

  3. 7 sposobów na sprawdzenie wersji MongoDB

  4. Ignorowanie właściwości wewnątrz właściwości złożonej za pomocą BsonIgnore

  5. Zwróć konkatenację wyników wywołań zwrotnych wywołanych w pętli