Javascript Mongoose引用集合或嵌套文档2级深度

Javascript Mongoose引用集合或嵌套文档2级深度,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我在NodeJS上使用mongoose,我有一个页面集合,比如 { "_id" : ObjectId("5b3cf0e7ee00450156711a47"), "language" : "en", "published" : true, "content" : [ { "title" : "my title 1", "subTitle" : "subtitle 1", "it

我在NodeJS上使用mongoose,我有一个页面集合,比如

{
    "_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级深度文档或包含引用/集合的内容


我还计划进行版本控制,这将影响此决定,因为更新可能/将创建文档的新版本。

我更喜欢此处的参考集合

页面架构

{
"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,
 }

这个解决方案比嵌套的解决方案提供了什么?我的意思是它们都有效,但我只是想知道其中一个的原因。参考资料看起来更有条理。对于嵌套的一个,将来当您有很多内容和项目时,它会让您感到困惑。