【问题标题】:MongoDB update/insert whole collection (array)MongoDB 更新/插入整个集合(数组)
【发布时间】:2013-05-09 22:49:37
【问题描述】:

我收藏了items

[
    {
        itemId: 1249,
        someField: 'abc'
    },
    {
        itemId: 1479,
        anotherField: 'bcc'
    }
    ,
    // etc
]

我收到另一部分数据。有些项目可能已经存在,有些则没有,

[
    {
        itemId: 6534,
        someField: 'trw'
    },
    // already stored in collection..
    {
        itemId: 1249,
        someField: 'abc'
    }
]

我正在寻找使用upsert 策略批量插入此数据的方式(意味着,如果具有此类 itemId 的项目已经存在 - 更新,否则插入)。

这是否可能只用一个查询,我需要手动完成收集并更新每个项目?

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    我用这个,可能不是最有效的方法,但它有效

    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();}
                                });
                            }
    
                        });
    });
    

    将它包装在一个函数中应该可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 2012-09-10
      相关资源
      最近更新 更多