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应该可以工作