Javascript 如何更新mongoose嵌套数组文档
我知道这个问题是重复的,但我不知道为什么我被卡住了 问题: 如何使用find byJavascript 如何更新mongoose嵌套数组文档,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我知道这个问题是重复的,但我不知道为什么我被卡住了 问题: 如何使用find by\u id和requirement.update来编辑“requirement.$.update”数组文档(如果需要requirement.\u id) 我的模式 ---------------- namr: String requirement:[{ version: Number, update:[{ date: Date,
\u id
和requirement.update来编辑“requirement.$.update”
数组文档(如果需要requirement.\u id
)
我的模式
----------------
namr: String
requirement:[{
version: Number,
update:[{
date: Date,
number: Number,
description: String
}]
}],
--------
您可以使用下面的查询
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) }
]
}
)
解释得很好@AnthonyWinzlet仍然找不到解决方案,你有时间检查吗?你面临什么问题?请更新您的问题,并解释哪些不适合您。更新后,请立即查看@AnthonyWinzletHmm。还有一个人指出了一个现有的答案(第一条评论中的链接),他没有阅读第一段代码以外的内容。如果你真的读了它,那么“第一块”实际上是解释说,使用硬索引值并不是怎么做的。除了MongoDB 3.6可用解决方案之外,另一个响亮的信息是嵌套数组是一个非常糟糕的主意。我建议实际阅读内容,而不仅仅是寻找“cargo cult”的代码。你可能会学到一些有用的东西。另外,请不要在回答其他问题时使用“请帮助”进行评论。我们可以再添加一个级别吗?像1-外,2-内,3-other@BinaraMedawatta如果您还有疑问,请提出新问题
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) }
]
}
)