gpt4 book ai didi

javascript - Node js和mongo更新文件中不存在的数据但数据存在于数据库中

转载 作者:行者123 更新时间:2023-11-30 19:07:45 26 4
gpt4 key购买 nike

我的程序中有一个功能,我从 csv 上传文件,然后解析它并添加到 mongo 数据库。

场景一,假设我有来自 ff 的数据,这些数据已经被解析并成功添加到数据库中。现在数据库包含 2 条记录。

文件1

{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
},{
"userId": 2,
"id": 2,
"title": "delectus aut autem2",
"completed": false
}

现在用户再次上传文件,但它现在只包含用户 ID 为 1 的数据 1,用户 ID 为 2 的数据 2 不再存在,但用户 ID2 仍然存在于数据库中。

所以我想要的是它会更新文件中存在的数据,还会更新文件中不存在但存在于数据库中的数据

例如,如果我将上传此文件 2,这将使用以下数据更新用户 ID 1,还将更新用户 ID2 并将用户 ID2 完成值设置为:true。

文件2

{
"userId": 1,
"id": 1,
"title": "delectus aut autem 1111",
"completed": false


},

知道什么是最好的方法吗?下面是我当前的代码,它与上面讨论的问题具有相同的流程,我只是使用了 VIN。

 async.parallel({
Q1: function (next) {
//update existing one
Vehicle.model.findOne().where('VIN', value.VIN).then(function (data) {
if (data) {
Vehicle.updateItem(data, value, function (err) {
if (err) {
console.log("[ERROR]", err)
}
})
} else {
//else create new data
var newVehicle = new Vehicle.model({ value }),
updater = newVehicle.getUpdateHandler(value, res, {
errorMessage: 'There was an error creating new data:'
});
updater.process(value, function (err) {
if (err) {
console.log("[ERROR]", err)
}
})
}

})
},
Q2: function(next){

}
})

最佳答案

{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
},{
"userId": 2,
"id": 2,
"title": "delectus aut autem2",
"completed": false
}

upsert 查询。它会做什么

1-如果userID为2的文档已经存在,则更新数据库中提供的所有字段

2-由于 upsert 为真,因此如果文档不存在,它将插入一个新文档。

 db.collection.update({userId:2},{$set:{userID:2,id:2,title:"delectus aut autem2","completed": false}}, {upsert:true})

查看documents

关于javascript - Node js和mongo更新文件中不存在的数据但数据存在于数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58816169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com