Я читал, что Model.collection.insert
быстрее, чем Model.create
.Mongoose bulk update/save
Я 1kk пользователей в User.collection
, я хочу, чтобы обновить их все через каждую 1 минуту: Это мой код:
const mongoose = require('mongoose');
const User = require('./models/user');
const async = require('async');
function getRandomArbitrary(min, max) {
return Math.round(Math.random() * (max - min) + min);
}
User.find({}, (err, docs) => {
async.mapSeries(docs, (doc, callback) => {
doc.value = getRandomArbitrary(0,100);
doc.save((err) => {
callback(err, doc);
});
}, (err, result) => {
if (err) return err;
console.log('completed');
});
});
Это хороший способ для достижения этой цели? Требуется режим, не превышающий 1 минуту. Как увеличить производительность?
async.map - опасная операция, она блокирует цикл события (если вы не создаете отдельный дочерний процесс), и это вызывает утечку памяти. Спасибо, async.mapLimit - лучший вариант – Artur