如何在更新mongoose上推送对象数组

时间:2017-05-25 13:04:27

标签: node.js mongodb mongoose mongodb-query

我试过这样的事情:

查询:

query = {
      pictures: {$pushAll: files}
}

文件数组如下所示:

[{ fieldname: 'productPhotos',
        originalname: 'images.jpg',
        encoding: '7bit',
        mimetype: 'image/jpeg',
        filename: '422e64cfb147eff02fee5166d63939b10564d4ad-images.jpg',
        }]

更新mongoose模型:

 Product.update({ _id: product.productId}, query,...

模特看起来像这样的照片:

pictures: [{
        filename: {
            type: String,
            required: false
        }
    }],

问题是数据库中的数组没有更新...任何解决方案?

1 个答案:

答案 0 :(得分:3)

错误的方法,你应该使用$push$each。即

Product.update(
 { "_id": product.productId }, 
 { "$push": { "pictures": { "$each": files } } },
 function(err,callback) {

 }
) 

因此更新运算符(即$push)位于更新语句的根,后跟要应用的字段。$each是一个修饰符,用于接受“列表”(如果内容)添加而不是“单数”