MongoDB更新/插入整个集合(数组)
我有收集的items
,
[ { 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();} }); } }); });
包装这个function应该可以工作