首页 文章

如何在mongoDB中更新数组的第一个元素?

提问于
浏览
0

我正在学习NodeJs和MongoDb,我将创建一个相册 . 我遇到了mongoDB的问题 .

事实上,在上传图片后,我将新图片推送到数据库中,如下所示:

AlbumPicture.update({album:'album1'}, {$push: {pictures:file_name}}, function(err, data){
  if(err){
    console.log(err);
  }

  console.log('Database Updated');
});

问题是:'row':pictures是一个数组()所以当我推送新数据时,这个数组的第一个元素(id:[0])没有设置 .

示例:

{
  picture:
    [
      "", // Not Set ??
      "1.jpg",
      "2.jpg"
    ]
}

如何更新此数组的第一个元素,然后再推送其他数据?

我测试了这些部分代码,但它似乎不起作用,它不漂亮 .

AlbumPicture.find({album:'album1'}).exec(function(err, data){

  if(err){
    console.log(err);
  }

  if(data[0].pictures[0] == '')
  {
    AlbumPicture.update({album:'album1'}, {$set: {'pictures[0]':file_name}}, function(err, data){
      if(err){
        console.log(err);
      }

      console.log('Database Updated @ 0');
    });
  }
  else
  {
    AlbumPicture.update({album:'album1'}, {$push: {pictures:file_name}}, function(err, data){
      if(err){
        console.log(err);
      }

      console.log('Database Updated');
    });
  }
});

UPDATE : I create my collection like this :

var albumData = {
  album : 'album1',
  pictures : ''
};

var AlbumPicture = new AlbumPicture(albumData);

AlbumPicture.save(function(error, data){
 if(error){
  console.log(error);
 }
 else
 {
  console.log('Album Created');
  res.json('created');
 }
});

1 回答

  • 0

    如果将图片设置为空数组,则索引0处的值不应该是 .

    var albumData = { album : 'album1', pictures : [] };

相关问题