Mongodb 如何查询和更新嵌套数组

Mongodb 如何查询和更新嵌套数组,mongodb,Mongodb,我正在建立一个课程体系。每个课程有多个部分,每个部分有多个步骤。我的数据结构如下: { “_id”:“MTZ4DMTMKWTWBZE”, “鼻涕虫”:“如何变得很棒”, “标题”:“如何变得很棒”, “说明”:“在4节简单课程中”, “createdAt”:ISODate(“2014-08-25T13:33:24.675Z”), “条文”:[ { “标题”:“保持冷静”, “描述”:“标题真的说明了一切”, “步骤”:[ { “头衔”:“戴太阳镜”, “说明”:“始终有效。” }, { “标题

我正在建立一个课程体系。每个课程有多个部分,每个部分有多个步骤。我的数据结构如下:

{
“_id”:“MTZ4DMTMKWTWBZE”,
“鼻涕虫”:“如何变得很棒”,
“标题”:“如何变得很棒”,
“说明”:“在4节简单课程中”,
“createdAt”:ISODate(“2014-08-25T13:33:24.675Z”),
“条文”:[
{
“标题”:“保持冷静”,
“描述”:“标题真的说明了一切”,
“步骤”:[
{
“头衔”:“戴太阳镜”,
“说明”:“始终有效。”
}, 
{
“标题”:“搞笑”,
“描述”:“偶尔开个玩笑,但不要开蹩脚的玩笑。”
}
]
}
]
}
这在添加步骤时起作用

Course.\u collection.update({u id:Course.\u id,sections:section}{
“$push”:{
“节.$.steps”:步骤
}
})
但我不知道如何更新步骤。我试着给这些步骤一个ID,然后这样做,但它不起作用,而且查询中不能有两个位置(
$
)。我试过这样的方法:

Course.\u collection.update({\u id:Course.\u id,'sections.steps.\u id':step.\u id}{
“$set”:{
“节.步骤.$.title”:“测试更新标题”
}
})
但这产生了以下错误:

无法使用字符串字段名附加到数组:步骤

有办法做到这一点吗?还是我的模式设计失败了


谢谢

可能的重复项发现了大量重复项。。显然这是在MongoDB。我想知道你为什么会使用嵌套文档。只要您只是简单地添加和获取,就可以了,但是从第二级更新文档是不可能的/限制是嵌套数组,而不是嵌套文档。模式设计是解决此类问题的方法。为什么不将章节或步骤作为顶级文档?一门课程只是在所有章节/步骤上找到的结果,这些章节/步骤上都有相同的课程标识符。对了,这就是我现在解决它的方法。我想我的设计失败了。我认为这是一个使用嵌入的好例子,因为一个步骤永远不会在一个部分之外被查询,并且一个部分总是作为课程的一部分被获取。它们只是一个小部分,就像书中的章节和页面一样。