【发布时间】:2019-07-21 22:14:09
【问题描述】:
我在 node.js 中使用 MongoDB。我正在尝试根据不同的条件更新或插入许多文档;但是,MongoDB 更新(使用 upsert)仅适用于单个文档或具有相同条件的多个文档。目前,我有一个包含我要插入的对象的数组(或者如果存在唯一索引则更新),我正在循环遍历数组并调用 updateOnce;但是,我相信这种方法对于我将拥有的大量对象不是很有效。 有什么更好的方法来实现这一目标?
var mongoUtil = require( './database.js' );
var db = mongoUtil.getDb();
//array of objects to insert:
//NOTE: First + Last name is a unique index
var users = [
{firstName:"John", lastName:"Doe", points:300},
{firstName:"Mickey", lastName:"Mouse", points:200}
];
var collection = db.collection( 'points' );
for(var i = 0; i < users.length; i++) {
//If firstName and lastName already exists, update points. Otherwise insert new object
collection.updateOne(
{firstName: users[i].firstName, lastName: users[i].lastName},
{$set: {points: users[i].points}},
{upsert: true},
function(err,docs) {
if(err)
console.log(err);
}
)
}
【问题讨论】:
-
这可能是 stackoverflow.com/questions/40244739/… 的副本。请查看。