MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb заявка бавна с точкова нотация

Вашият explain() резултатите предполагат, че:

  1. Има 10962 обекта, които имат key.a : 456213154 . Вашата db.collection.find({"key.a": 456213154}) заявката използва индекса на key.a и върна 10962 обекта.

  2. Във вашата колекция има 0 обекта, които имат key.a : 456213154 и имат key.b : { $exists : true } . db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}}) заявката използва вашия индекс на ключ.

Вижте n стойност за всяка заявка - това е върнатото число; и cursor стойност - това е BtreeCursor ако се използва индекс. В този случай би имало смисъл защо първата заявка отнема много повече време, защото има значително повече обекти за връщане.

Сигурни ли сте, че документите с key.a : 456213154 стойностите също имат key.b стойности?

Редактиране:

Заявката с $exists param е грешен синтаксис за проверка на съществуването във вградени документи.

Опитайте db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } }) .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Обработка на прекъсване/повторно свързване на MongoDB от Node

  2. Настройване на множество Docker контейнери и MongoDB за работа в CircleCI

  3. функцията mongoose findOne връща undefined

  4. MongoDb:$geoIntersects за множество входни координати

  5. Симулиране на бавна заявка в mongodb?