当多个对象项作为数组出现时,将项保存到数据库中的最佳方式是什么



我现在正试图将多个数据保存到数据库中。我想做的是将数组中的每个项都保存为一个对象。

例如数据

[{ "name": "something", "age": 12 },{ "name": "something else", "age": 11 }]

我现在所做的是循环遍历数据数组,每次都保存它们。

expenseArray.map((expenses) => {
newExpense = new Expense(expenses);
newExpense.shop_id = req.params.shop_id;
newExpense
.save()
.then(function (expense) {
returnArray.push(expense);
})
.catch(function (error) {
res.status(403).json({ msg: error });
});
});

eg现在只有2个对象。但我想知道的是,如果数组是由1000个对象组成的数组,我认为我的代码会减慢应用程序的速度。因为我给save打了1000次电话。有没有更好的方法来解决这种情况?

您可以使用Mongoose的insertMany,而不是循环和手动创建/保存每个文档。来自文档:

验证文档数组并将其插入的快捷方式MongoDB,如果它们都是有效的。此函数比.create((快因为它只向服务器发送一个操作,而不是为每个文档。

你可以这样使用它:

await Expense.insertMany(expenseArray);

最新更新