【发布时间】:2017-02-20 16:18:53
【问题描述】:
我有一个包含三个字段的文档的集合:first_name、last_name 和 age。我试图弄清楚 Mongoose 中的哪些查询可以用来进行批量 upsert。我的应用程序偶尔会收到具有这三个字段的新对象数组。我希望查询检查文档中是否已经存在名字和姓氏,如果存在 - 如果年龄不同,请更新年龄。否则,如果名字和姓氏不存在,则插入一个新文档。
目前,我只进行导入 - 尚未构建此 upsert 片段的逻辑。
app.post('/users/import', function(req, res) {
let data = req.body;
let dataArray = [];
data.forEach(datum => {
dataArray.push({
first: datum.first,
last: datum.last,
age: datum.age
})
})
User.insertMany(dataArray, answer => {
console.log(`Data Inserted:`,answer)
})
`
我的用户模型如下所示:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
first: String,
last: String,
age: Number,
created_at: { type: Date, default: Date.now }
});
var User = mongoose.model('User', userSchema);
module.exports = User;
【问题讨论】:
-
您使用的是什么版本的 Mongoose 和 MongoDB?
-
mongo - 3.2.9 mongoose - 4.6.3
-
这能回答你的问题吗? Bulk upsert in MongoDB using mongoose