Node.js MongoDB更新/插入整个集合(阵列)
我收集了一些Node.js MongoDB更新/插入整个集合(阵列),node.js,mongodb,Node.js,Mongodb,我收集了一些物品 [ { itemId: 1249, someField: 'abc' }, { itemId: 1479, anotherField: 'bcc' } , // etc ] 我收到了另一部分数据。有些物品可能已经在那里了,有些没有 [ { itemId: 6534, someField: 'trw' }, //
物品
[
{
itemId: 1249,
someField: 'abc'
},
{
itemId: 1479,
anotherField: 'bcc'
}
,
// etc
]
我收到了另一部分数据。有些物品可能已经在那里了,有些没有
[
{
itemId: 6534,
someField: 'trw'
},
// already stored in collection..
{
itemId: 1249,
someField: 'abc'
}
]
我正在寻找使用upsert
策略批量插入此数据的方法(意味着,如果已存在具有此类itemId的项-更新,否则插入)
这是否可能只需要一个查询,当然我需要手动完成收集并插入每个项目?我使用这个方法,可能不是最有效的方法,但它很有效
MongoClient.connect("mongodb://localhost:27017/devbed", {native_parser:true}, function(err, db) {
db.collection(project.name).findOne({"revision":project.tmprev}, function(err,item){
if(item){
db.collection(project.name).update({JSON},{w:1},function(err, object) {
if (err) {console.warn(err.message);}
else {console.log("succesfully saved");
db.close();}
});
}
else{
db.collection(project.name).insert({JSON}]},{w:1},function(err, object) {
if (err) {console.warn(err.message);}
else {console.log("succesfully saved");
db.close();}
});
}
});
});
将其包装到函数中应该可以工作我使用这种方法,可能不是最有效的方法,但它可以工作
MongoClient.connect("mongodb://localhost:27017/devbed", {native_parser:true}, function(err, db) {
db.collection(project.name).findOne({"revision":project.tmprev}, function(err,item){
if(item){
db.collection(project.name).update({JSON},{w:1},function(err, object) {
if (err) {console.warn(err.message);}
else {console.log("succesfully saved");
db.close();}
});
}
else{
db.collection(project.name).insert({JSON}]},{w:1},function(err, object) {
if (err) {console.warn(err.message);}
else {console.log("succesfully saved");
db.close();}
});
}
});
});
将其包装到函数中应该可以工作