_id идентификатор объекта в поддокументе VS новая коллекция - PullRequest
0 голосов
/ 16 февраля 2019

Дело в том, что я разрабатываю API-интерфейс restjs nodejs и не уверен в наилучшем способе установления отношений между сущностями.У меня есть основная сущность, которая будет хранить большую часть информации (простые свойства, такие как строки, числа, даты .... и вложенные документы).Вся эта информация уникальна для каждого основного документа, поэтому мой первый подход заключался в создании только одного документа с несколькими вложенными документами или массивами вложенных документов.Но я должен быть в состоянии выполнить пост / получить / поставить / удалить некоторые из этих вложенных документов по отдельности.Итак, в заключение мой вопрос.что лучше думать с точки зрения производительности?

Может быть, на примере я могу объяснить себя лучше.Всегда думая и принимая во внимание, что все поддокументы не передаются другим основным документам.

Пример одной коллекции:

  {
    "_id": ObjectId("xxxxxxxxxx"),
    "prop1": "some text",
    "number2": 1,
    subDocumentsArr: [
        { 
            "_id": ObjectId("xxxxxxxxxx"),
            "someSubDocumentProp": "Some text"
        },
        { 
            "_id": ObjectId("xxxxxxxxxx"),
            "someSubDocumentProp": "More text"
        }
    ]
}

VS

Пример двух коллекций:

(first collection)

{
    "_id": ObjectId("xxxxxxxxxx"),
    "prop1": "some text",
    "number2": 1,
    subDocumentsArr: [ "subdoc1", "subdoc2" ]
}


(second collection)
    { 
        "_id": ObjectId("subdoc1"),
        "someSubDocumentProp": "Some text"
    }
    { 
        "_id": ObjectId("subdoc2"),
        "someSubDocumentProp": "More text"
    }

Спасибо!

1 Ответ

0 голосов
/ 16 февраля 2019

Если subdocuments мало, вставьте его.Это будет намного быстрее запрашивать и обновлять.Основная часть баз данных на основе документов заключается в том, что вы действительно хотите инкапсулировать вещи в как можно меньшее количество документов - вот как они предназначены для использования.

https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1 дает несколько полезных советово правилах большого пальца вы можете использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...