代码之家  ›  专栏  ›  技术社区  ›  Eric

如何在mongo中更新数据

  •  0
  • Eric  · 技术社区  · 7 年前

    因此,我目前正在与mongodb和nodejs合作一个项目,我想知道,如何通过nodejs更新mongodb中的数据?我的问题是我想保留旧数据并添加新数据。例如,这是我的mongodb中当前的数据

    {
        "_id" : ObjectId("5a1c0c1c3b147ec2e31cceb3"), 
        "event_id" : "1", 
        "event_medium" : "null", 
        "event_tags" : ["#JustTesting"]
    }
    

    所以我想向 event_tags 数组并仍保留旧数据。

    例如,最终结果是:

    {
        "_id" : ObjectId("5a1c0c1c3b147ec2e31cceb3"), 
        "event_id" : "1",
        "event_medium" : "null", 
        "event_tags" : ["#JustTesting", "#Test", "#Something"]
    }
    
    3 回复  |  直到 7 年前
        1
  •  0
  •   wavto    7 年前

    为此,您应该使用MongoDB的更新功能。MongoDB知道不同 update operators ,在您的情况下,您可以使用 $push $pushAll (第二个已弃用):

    一个接一个地更新 $推送

    YourCollection.update({ _id: 'xxx' }, { $push: { event_tags: '#Test' } });
    YourCollection.update({ _id: 'xxx' }, { $push: { event_tags: '#Something' } });
    

    或同时使用 $pushAll (现已弃用)

    YourCollection.update({ _id: 'xxx' }, { $pushAll: { event_tags: ['#Test', '#Something'] } });
    

    为了从你的NodeJS应用程序中与MongoDB进行交互,我会使用一个库,比如 this one .

        2
  •  0
  •   dpetrini    7 年前

    您的起点是Mongodb中CRUD(创建、读取、更新、删除)操作中的更新函数。

    除其他外,您的节点程序应该具有更新功能,您可以在其中设置要更新的id字段,并在“数据”中加载要更新的内容字段,例如:

    myModel.prototype.update = function (_id, data, callback) {
        const query = { _id: this.mongo.ObjectId(_id) };
        debug(' update:' + JSON.stringify(query));
        this.mongo.collection('mycollection').update(query, data, callback);
    };
    

    如果您使用MVC模式,这段代码应该放在您的模型中。

    还有很多事情要做。 老实说,我为nodejs和Mongoose(mongo db驱动程序)推荐一个更深入的教程,如本教程的第3部分和第4部分: MDN tutorial for mongo/node/express

        3
  •  0
  •   Sreeragh A R    7 年前

    我猜你在用猫鼬。。

        eventModel.findOne({event_id:1 },
            function(err, eventObj){
            if(err){
              //handle error
            } else { 
              if(eventObj === null) {
                //event doesnot exist       
              }
              var tagList = eventObj.event_tags; 
              tagList.push('new_tag1');
              tagList.push('new_tag2');
              eventObj.event_tags = tagList;
              eventObj.save(function(err){
                if(err){
                  //handle error
                } else {
                  //success
                }
              })