我在节点js上使用猫鼬,并且有一个Page集合,例如
{
"_id" : ObjectId("5b3cf0e7ee00450156711a47"),
"language" : "en",
"published" : true,
"content" : [
{
"title" : "my title 1",
"subTitle" : "subtitle 1",
"items" : [
{
"title" : "my item title 1",
"subTitle" : "item subtitle 1",
},
{
"title" : "my item title 2",
"subTitle" : "item subtitle 2",
}
]
},
{
"title" : "my title 2",
"subTitle" : "subtitle 2",
}
],
"createdAt" : ISODate("2018-07-04T16:08:07.057Z"),
"__v" : 0
}
“内容”数组包含许多对象,其中一些对象还包含一个“项目”数组,其中也包含许多对象。 (位于2级深度)
我想知道引用内容对象而不是嵌套它们是否会更好,因为它们也有嵌套文档(在项目内部),因此是2级深度嵌套。
我必须使用page.content.id(listId).items.id(id)
来找到它们,并使用page.content.id(listId).items.id(id)[key] = value; page.save();
来更新它们。
考虑到最多不应有3个“项目”和5个“内容”,您认为最好的解决方案是更新嵌套在2级深文档或具有引用/集合的内容?
我还计划进行版本控制,因为这可能会/将会创建该文档的新版本。
答案 0 :(得分:0)
我希望在这里收集参考资料
页面架构
{
"language" : String,
"published" : Boolean,
"content" : [
{type: mongoose.Schema.Types.ObjectId, ref: 'content'}
],
"createdAt" : Date,
}
内容架构
{
"title" : String,
"subTitle" : String,
"items": [{type: mongoose.Schema.Types.ObjectId, ref: 'items'}]
}
项目架构
{
"title" :String,
"subTitle" : String,
}