#arrays #node.js #mongodb #mongoose
#массивы #node.js #mongodb #mongoose
Вопрос:
В моей базе данных mongodb есть коллекция с именем «restaurants».
В этой коллекции есть только один документ
Проблема в том, что когда я извлекаю его с помощью mongoose, по Model.find({restaurantUid})
, для его извлечения требуется около 1 second
.
В этом документе ресторана содержится около 140 продуктов (foods), и у меня есть массив этих продуктов n x n, таблица, чтобы отслеживать, какие блюда выбираются по какому блюду. Размер документа составляет около 3 МБ.
Не могли бы вы предложить мне способ уменьшить это время выборки?
Я действительно не думаю, что проблема связана с индексацией, поскольку в моей коллекции есть только один документ.
Заранее спасибо.
Ответ №1:
Если вы используете Mongoose для своего приложения, ваш код может выглядеть следующим образом для повышения производительности…
Model.findById(_id)
.lean()
.exec(function (err, doc) {
//handle error and results
});
-
Model.findById(_id)
вместоModel.find()
. Потому что перед отправкой команды_id
выполняется приведение на основе схемы.
Ссылка: документ mongoosejs для findById() -
Query.prototype.lean()
который возвращает простые объекты javascript и обеспечивает высокую производительность для сценариев только для чтения. ссылка: документ mongoosejs для lean()
Также следите за этим обсуждением:https://groups.google.com/forum /#!тема/mongoose-orm/u2_DzDydcnA/обсуждение
Ответ №2:
Насколько мне известно, нет способа ускорить выборку, я имею в виду, вы могли бы использовать какой-нибудь облачный сервис базы данных, такой как «MongoDB Altas», и купить хороший план, чтобы у вас было лучшее подключение к серверу и надеяться на лучшее ?.
Я предполагаю, что ваша база данных mongo запущена локально на вашем компьютере, и я не думаю, что вы можете ускорить этот процесс.
Я не уверен, в чем именно ваша проблема, у вас есть этот запрос get к базе данных в виде асинхронной функции ??, чтобы вы могли дать серверу время загрузить все продукты, а затем распечатать таблицу.
Комментарии:
1. База данных запущена на удаленном сервере. Проблема в том, что когда мое пользовательское приложение пытается получить эти продукты, они слишком долго ждут.