Mongodb如果存在则添加到数组

时间:2016-06-05 18:58:52

标签: node.js mongodb

   {
       'ID': 'IDexample',
       'Coordinates'  : [
           {'CoordinateX' :  123,
            'CoordinateY':  5
           },
           {'CoordinateX' :  54,
            'CoordinateY':  23'
           }
        ]
    }

如果在coordinateCollection中存在“IDexample”,如何向数组坐标添加2个元素?如果不存在,则将新文档添加到集合中。 我使用的是MongoClient,集合的名称是coordinatesCollection。

 coordinatesCollection.findOne( { "unique_id" : unique_id }, function(err, object){
    if (object) {
      ????
    } else {
      coordinatesCollection.insert({
        "unique_id" : unique_id,
        "coordinates" : [
          {"coordinateX" :msg.coordinatex,
           "coordinateY" : msg.coordinatey
          }
        ]
      })
    }
  });

1 个答案:

答案 0 :(得分:0)

试试这个:

   coordinatesCollection.findOne( { "unique_id" : unique_id }, function(err, object){
        if (object) {
         coordinatesCollection.findOneAndUpdate({ "unique_id" : unique_id },
       { $push: {"Coordinates": {$each: [ { "CoordinateX": 5, "CoordinateY": 8 }, { "CoordinateX": 6, "CoordinateY": 7 } ]}}},function(err,data){
             if(err){
                console.log("err:"+err);
             }
             else if(data){
                console.log("UPDATED:"+data);
             }

       });
        } else {
          coordinatesCollection.insert({
            "unique_id" : unique_id,
            "coordinates" : [
              {"coordinateX" :msg.coordinatex,
               "coordinateY" : msg.coordinatey
              }
            ]
          })
        }
      });