使用req.body通过Mongoose更新和/或添加数组元素属性?
我有以下文件:
{ "_id" : ObjectId("503b83dfad79cc8d26000004"), "pdfs" : [ { "title" : "Test document", "pdf_id" : ObjectId("504f6793ce351a595d000004"), "created_at" : ISODate("2012-09-11T16:32:19.276Z") }, { "title" : "Some other doc", "pdf_id" : ObjectId("502bf124b4642341230003f0"), "created_at" : ISODate("2012-09-11T11:34:19.276Z") } ] }
现在通过req.body
传入表单,我有2个字段: title
和description
。
我想更新title
并为指定的pdf_id插入description
,我该怎么做?
所以最后,我的文档现在看起来像:
{ "_id" : ObjectId("503b83dfad79cc8d26000004"), "pdfs" : [ { "title" : "This is an UPDATED title", "description" : "It has an ALL NEW description", "pdf_id" : ObjectId("504f6793ce351a595d000004"), "created_at" : ISODate("2012-09-11T16:32:19.276Z") }, { "title" : "Some other doc", "pdf_id" : ObjectId("502bf124b4642341230003f0"), "created_at" : ISODate("2012-09-11T11:34:19.276Z") } ] }
只是要清楚,我只是在寻找Mongoose update
语法。
您可以使用$
positions操作符来引用$set
匹配的pdfs
数组元素:
Model.update( { 'pdfs.pdf_id': pdf_id }, { $set: { 'pdfs.$.title': title, 'pdfs.$.description': description }}, function (err, numAffected) { ... } );