Справочная коллекция Mongoose или вложенный документ глубиной 2 уровня - PullRequest
0 голосов
/ 05 июля 2018

Я использую мангуст на узле js, и у меня есть коллекция страниц, такая как

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

Массив "content" включает в себя множество объектов, и некоторые из этих объектов включают в себя массив "items", который также включает в себя множество объектов. (вложено в 2 уровня)

Мне было интересно, не лучше ли будет ссылаться на объект содержимого вместо того, чтобы они были вложенными, потому что у них тоже есть вложенные документы (внутри элементов), так что это 2-уровневая вложенность. Я должен использовать page.content.id(listId).items.id(id), чтобы найти их и page.content.id(listId).items.id(id)[key] = value; page.save();, чтобы обновить их.

Учитывая, что не должно быть более 3 "элементов" и максимум 5 "контента", что, по вашему мнению, было бы лучшим решением, обновляя вложенный документ глубиной 2 уровня или контент, имеющий ссылку / коллекцию?

Я также планирую создать версии, которые повлияют на это решение, поскольку обновление может / создаст новую версию документа.

1 Ответ

0 голосов
/ 05 июля 2018

Я бы предпочел справочную коллекцию здесь

Схема страницы

{
"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,
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...