Model.create () проти Model.collection.insert (): більш швидкий підхід
Model.create()
це поганий спосіб робити вставки, якщо ви маєте справу з дуже великою масою. Це буде дуже повільно . У такому випадку вам слід скористатися Model.collection.insert
, що працює набагато краще . Залежно від розміру основної маси, Model.create()
навіть розбиться! Пробував мільйон документів, не пощастило. Використовуючи Model.collection.insert
це зайняло всього кілька секунд.
Model.collection.insert(docs, options, callback)
docs
- це масив документів, які потрібно вставити;
options
є необов'язковим об'єктом конфігурації - див . документи
callback(err, docs)
буде викликано після збереження всіх документів або виникнення помилки. На успіх, Документи - це масив збережених документів.
Як автор Mongoose вказується, тут , це буде метод обходу будь-яких процедур перевірки і доступу водія Монго безпосередньо. Це ви можете зробити, оскільки ви обробляєте велику кількість даних, інакше ви взагалі не зможете вставити їх у свою базу даних (пам’ятайте, що ми говоримо тут про сотні тисяч документів).
Простий приклад
var Potato = mongoose.model('Potato', PotatoSchema);
var potatoBag = [/* a humongous amount of potato objects */];
Potato.collection.insert(potatoBag, onInsert);
function onInsert(err, docs) {
if (err) {
// TODO: handle error
} else {
console.info('%d potatoes were successfully stored.', docs.length);
}
}
Оновлення 2019-06-22 : хоча insert()
все ще можна використовувати просто чудово, воно застаріло на користь insertMany()
. Параметри точно такі самі, тож ви можете просто використовувати його як замінник, що випадає, і все повинно працювати нормально (ну, значення повернення дещо інше, але ви, мабуть, не використовуєте його все одно).
Довідково