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

MongoDB + Python - bardzo wolne proste zapytanie

Czy jesteś pewien, że Twój indeks został utworzony? czy możesz podać wyjście getIndexes() Twojej kolekcji

np:db.my_collection.getIndexes()

i wyjaśnienie zapytania

db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28 }).explain()

PS:oczywiście muszę zgodzić się z @Aesthete, że przechowujesz znacznie więcej, niż potrzebujesz...

Aktualizacja z 29.01.2014

Idealny! Jak widzisz, masz cztery różne indeksy, kiedy możesz utworzyć JEDEN indeks złożony, który będzie zawierał je wszystkie.

definiowanie

db.my_collection.ensureIndex({created_at_year: 1, created_at_month: 1, created_at_day: 1, created_at_hour: 1 })

zapewni dokładniejszy indeks, który umożliwi zapytanie o:

  • year
  • year i month
  • year i month i day
  • year i month i day i hour

Dzięki temu Twoje zapytania (z czterema kluczami) będą znacznie szybsze, ponieważ wszystkie Twoje kryteria zostaną spełnione w danych indeksu!

pamiętaj, że kolejność kluczy w ensureIndex() jest kluczowe, że kolejność faktycznie definiuje wyżej wymienioną listę zapytań!

Pamiętaj też, że jeśli potrzebujesz tylko tych 4 pól, to jeśli określisz poprawną projekcję
np:
db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28}, { created_at_year: 1, created_at_month: 1, created_at_day: 1 })

wtedy zostanie użyty tylko indeks, czyli maksymalna wydajność!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak sprawdzić, czy serializator mongodb jest już zarejestrowany?

  2. mongoose vs mongodb (moduły/rozszerzenia nodejs), co jest lepsze? i dlaczego?

  3. Limit czasu połączenia MongoDB z MongoLab w NodeJS na Heroku

  4. Wielodostępna baza danych mongodb oparta na danych wiosennych

  5. BsonSerializationException występuje, gdy nazwa elementu kończy się kropką