如何更新猫鼬嵌套数组文档[重复]
Posted
技术标签:
【中文标题】如何更新猫鼬嵌套数组文档[重复]【英文标题】:How to update mongoose nested array document [duplicate] 【发布时间】:2019-09-30 08:18:07 【问题描述】:我知道问题是重复的,但我不知道为什么我被卡住了
问题:
如何使用_id
和requirement.update._id
的查找(如果需要requirement._id
)编辑"requirement.$.update"
数组文档
// edit version number level2
exports.editVersionNumberPost = function(req, res)
var query =
date: req.body.date,
number: req.body.number,
description: req.body.description
Project.findOneAndUpdate( name: req.params.name,
"requirement._id" : req.params.versionID,
"requirement.update._id" : req.params.versionNumID,
"$set":
"requirement.$.update" : query
, new: true ,
function(err, obj))
;
我的架构
----------------
namr: String
requirement:[
version: Number,
update:[
date: Date,
number: Number,
description: String
]
],
--------
【问题讨论】:
很好解释here @AnthonyWinzlet 仍然找不到解决方案,您有时间检查一下吗? 您面临什么问题?请用一些解释来更新您的问题,以及什么不适合您。 已更新,请立即查看@AnthonyWinzlet 嗯。还有一个人指出了一个现有的答案(第一条评论中的链接),他没有阅读第一块代码。如果您真的阅读它,那么“第一个块”实际上带有使用硬索引值而不是如何做到这一点的解释。除了 MongoDB 3.6 可用的解决方案之外,另一个响亮的信息是 嵌套数组是一个非常糟糕的主意。我建议实际阅读内容,而不仅仅是寻找“货物崇拜”的代码。你可能会学到一些有用的东西。也请不要在回答其他问题时用“请帮助”评论。 【参考方案1】:您可以使用以下查询
db.getCollection("test").updateOne(
"name": req.params.name ,
"$set": "requirement.$[outer].update.$[inner].number": 100000 ,
"arrayFilters": [
"outer._id": mongoose.Types.ObjectId(req.params.versionID) ,
"inner._id": mongoose.Types.ObjectId(req.params.versionNumID)
]
)
【讨论】:
我们也可以再增加一个关卡吗?比如一外二内三其他 @BinaraMedawatta 如果您还有其他疑问,请提出新问题以上是关于如何更新猫鼬嵌套数组文档[重复]的主要内容,如果未能解决你的问题,请参考以下文章