2016-03-07 3 views
0

Я создаю expressjs api и используя mongodb. У меня есть достойное понимание индексов, и я понимаю, что их дорого создавать, когда в базе данных есть данные.Правильный способ создания индексов во время развертывания

В MS Sql Server вы должны создавать индексы при создании таблиц базы данных. Мой вопрос заключается в том, обрабатываю ли я это создание индексов в вызове post в своем экспресс-приложении или могу ли я достичь этого с помощью сценариев при развертывании моего приложения?

Например, мне нужна геопространственная индексация.

Будет ли создание индекса обработанным в экспресс-приложении, как это?

//express post call 
let col = db.collection('collection'); 
col.createIndex(// someIndex); 
col.insertOne(//Some document); 

Ищу лучший способ создания «начальные» состояний моего MongoDB и, в частности создания индексов мне нужно для определенных коллекций, прежде чем эти коллекции содержат какие-либо документы.

+1

Вы можете создать их, когда приложение запускается и, прежде чем ваш сервер HTTP начинает слушать. –

+0

Круто, что сработает. Я склонялся к этому, но я не смог найти пример с лучшим подходом к этому. Если вы сделаете свой комментарий ответом, я помечаю его как таковой. –

ответ

1

Итак, может случиться, у вас много данных в вашей базе данных во время развертывания, и вы не хотите, чтобы ваше индексирование было ужасным. Вот что может помочь MongoDB. Вы можете сделать индексацию в фоновом режиме, который не будет препятствовать все операции чтения и записи в базу данных, а индекс builds.A простой командой:

db.collection.createIndex({ a: 1 }, { background: true }) 

Проверьте руководство Для получения дополнительной информации.

https://docs.mongodb.org/manual/tutorial/build-indexes-in-the-background/

+0

Спасибо, я прочитал об этом, проходя через документы –