Проблема с медленным запросом MongoDB

Я столкнулся с проблемой медленных запросов в моей базе данных mongoDB, индексация выполнена правильно, я проверил отсутствие повторяющихся числовых идентификаторов, хотя у меня возникает проблема с медленными запросами. Я использую запрос findOne, в котором он сканирует всю базу данных и возвращает только один документ. Он также сообщает, что в этой операции он не может использовать индекс, а время выполнения операции составляет около 40-50 мс, что приводит к медленному выполнению запроса. Что можно сделать, чтобы избежать такого сценария.

Коллекция выглядит так

{_id: "MongoDBId";
userId: "MongoDBId";
arrFlield1: "arrayOfString";
arrField2 : "arrayOfString";
numericId : "Integer"}

И запрос, который я использую,

db.collection.findOne({userId:"userId"})

Возможно, вы захотите включить версию MongoDB, код, используемый для создания индекса, и указать, сколько документов содержится в коллекции. Сделайте db.collection.getIndexes() и убедитесь, что индекс userId существует. Чтобы узнать, используется ли индекс для запроса, используйте explain() для создания плана выполнения запроса.

prasad_ 06.05.2024 07:03

Спасибо @prasad_ после того, как я прикрепил индекс к идентификатору пользователя, эта проблема была решена. Я использовал это: - db.collection.createIndex({userId:1})

AFHAM FARDEEN 07.05.2024 11:01
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
1
2
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После того, как я прикрепил индекс к конкретному полю запроса userId, эта проблема была решена. Дело в том, что индексация была привязана к _id, ее нужно прикрепить к полю запроса, чего не было сделано. Как упоминал @_prasad, я сначала получаю индекс с помощью этой команды.

db.collection.getIndexes()

Затем я создал индекс для конкретного поля запроса, используя команду ниже.

db.collection.createIndex({userId:1})

Другие вопросы по теме