这是我的代码:
if (Type.isArray(docs) && docs.length > 0) {
promises.push(
new Promise(function promise(resolve, reject) {
that.model.collection.bulkWrite(
docs.map(item => {
that.modify(item);
return {
updateOne: {
filter: {
id: item.id
},
update: item,
upsert: true
},
}
}),
(err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
}
)
})
)
}
基本上我得到了大量的项目,如果它们存在于数据库中,我会更新它们,如果它们不存在,我创建它们。如果代码不明显,我在NodeJS btw中做这一切:D 问题是,在我的旧实现中,我的mongo文档有不同的属性类型,Int32,String,Date,Boolean,你可以命名它!但是对于bulkWrite,它们都会以某种方式转换为String,除了布尔类型的布尔值。
此外,第一次执行新实现时,它不会添加更新现有项,但会复制它们,因为“id”不是,例如2456 Int32,但是它的“2456”字符串
Google没有收到任何结果,或者我没有输入正确的搜索文本。
感谢您的帮助!