利用mongoose 插入多条数据,在插入使检查是否存在,存在则不插入
时间: 2024-01-01 13:22:26 浏览: 45
可以使用Mongoose的`bulkWrite()`方法进行批量插入多条数据,并且可以使用`upsert`选项来实现检查是否存在,如果已经存在则不插入。
下面是一个具体的示例:
```javascript
const User = mongoose.model('User', { name: String, age: Number });
// 要插入的数据
const users = [
{ name: 'Tom', age: 20 },
{ name: 'Jerry', age: 21 },
{ name: 'Alice', age: 22 }
];
// 构造插入操作数组
const operations = users.map(user => {
return {
updateOne: {
filter: { name: user.name }, // 查询条件
update: { $set: { age: user.age } }, // 更新字段
upsert: true // 如果不存在则插入新文档
}
};
});
// 执行批量插入操作
User.bulkWrite(operations)
.then(result => {
console.log(result);
})
.catch(error => {
console.error(error);
});
```
在上述示例中,我们首先定义了要插入的数据数组,然后使用`map()`方法将其转换为一组插入或更新操作数组。在每个操作中,我们使用`updateOne`操作符来更新或插入一条文档,同时使用`upsert`选项来指定是否插入新文档。最后,我们使用`bulkWrite()`方法执行批量操作。
需要注意的是,如果要使用`upsert`选项,必须使用`update`操作符来更新文档,而不能使用`replaceOne`操作符。