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

MongoDB :kolejność indeksów i kolejność zapytań muszą być zgodne?

Kolejność warunków w zapytaniu nie ma wpływu na to, czy może używać indeksu, czy nie.

np. typowa struktura dokumentu:

{
    "FieldA" : "A",
    "FieldB" : "B"
}

Jeśli masz indeks złożony na A i B :

db.MyCollection.ensureIndex({FieldA : 1, FieldB : 1})

Wtedy oba poniższe zapytania będą mogły korzystać z tego indeksu:

db.MyCollection.find({FieldA : "A", FieldB : "B"})
db.MyCollection.find({FieldB : "B", FieldA : "A"})

Tak więc kolejność warunków w zapytaniu nie uniemożliwia użycia indeksu - myślę, że jest to pytanie, które zadajesz.

Możesz to łatwo przetestować, wypróbowując 2 zapytania w powłoce i dodając .explain() po znalezisku. Zrobiłem to tylko, aby potwierdzić, i obaj wykazali, że użyto indeksu złożonego.

jednak, jeśli uruchomisz następujące zapytanie, NIE użyje to indeksu, ponieważ pole A nie jest pytane:

db.MyCollection.find({FieldB : "B"})

Zatem to kolejność pól w indeksie określa, czy może być ona użyta w zapytaniu, a nie kolejność pól w samym zapytaniu (do tego miał na myśli Lucas).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Utrzymywanie otwartego połączenia z bazą danych MongoDB

  2. Mongodb znajduje się wewnątrz tablicy podrzędnej

  3. Znajdź ciąg w ciągu w SQL

  4. Wersjonowanie obiektów Java MongoDB

  5. Node.js Mongoose.js ciąg do funkcji ObjectId