如何在mongoose中更新深度数组?

时间:2016-07-07 05:19:25

标签: node.js mongodb mongoose mongoose-populate

我在nodejs中使用mongoose ... 我想更新深度数组,但无法正确更新.. 该字段的架构如下......

case : [{
visit : [{
          visit_no : Number,
          treat : {
          rep : [{name : String,img :{type : String,match : /^http:\/\//i}}]
          }
}]}]

我在https://jira.mongodb.org/browse/SERVER-831的帮助下应用了查询,如下所示......

update({"_id" : fields.id,"case._id" : fields.case,"case.visit._id" : fields.visit,"case.visit.treat.rep._id" : req.body.PInv},{$set : {"case.$0.visit.$1.treat.rep.$2.img" : req.body.img}})

但是不会显示错误也不会给出正确的错误.. 我将需要这个问题的帮助

1 个答案:

答案 0 :(得分:0)

它可能与mongoose有关,不允许你每个键多次使用$运算符。使用DocumentArray.id(id)方法检出以搜索子文档。查看Noam El对this问题的回答。在使用上述方法之前,它可能会帮助您在最外层文档上执行findById()。

希望这有助于指明你正确的方向!