MONGODB mongoose在node.js中更新嵌入式文档

时间:2011-10-10 07:22:56

标签: mongodb node.js mongoose

我的主文档中有一个嵌入的图像文档,我可以按如下方式更新它。每次更新时,它都会覆盖现有图像并且不会将其添加到现有图像中。我试过“{images.push:image}”,但这不起作用。语法是什么?我不确定我是否能够解释这个问题。如果没有,请告诉我是否需要在此处添加更多信息。

var image = {
                    img     : new_file_name,
                    orig_img_name   : files.source.filename,
                    caption : fields.message,
                    upload_date : new Date()
                };

RentModel.update({'facebook_id':fb_id, 'prop_location.lat':lat, 'prop_location.lng':lng},   {'images':image}, function(err, docs){
                        if(err) {
                            console.log("Error during friends update");
                            throw err;
                        }
                        console.log('image updated to database', new_file_name);
                    });

1 个答案:

答案 0 :(得分:4)

首先尝试find()嵌入文档,然后将image添加到数组中。

RentModel.find({'facebook_id':fb_id, 'prop_location.lat':lat, 'prop_location.lng':lng}, function (err, item) {
    if (err) //throw ...
    if (item) {
      if (item.images && item.images.length) {
          item.images.push(image);
      }
      else {
          item.images = [image];
      }

      // save changes
      item.save(function (err) {
         if (!err) {
             // done ...
         }
      });
    }
});