Разработка схемы MongoDB - Выберите подход с двумя коллекциями или встроенный документ - PullRequest
1 голос
/ 01 апреля 2012

Я пытаюсь разработать простое приложение, в котором у меня есть две сущности Notebook и Note. Таким образом, Notebook может содержать несколько Notes. В RDBMS я мог бы иметь две таблицы и иметь одну ко многим отношения между ними. Я не уверен в MongoDB, стоит ли мне брать две коллекции подход или я должен вставлять заметки в коллекцию ноутбуков. Что бы вы предложили?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Кажется, что вполне разумно использовать одну коллекцию под названием Notebook, и каждый документ Notebook содержит встроенные заметки.Вы можете легко индексировать во встроенных документах.

Если в документе Notebook есть ключ 'notes', а значением является список заметок:

{
    "notes": [
        {"created_on": Date(1343592000000), text: "A note."}
    ]
}

# create index
db.notebook.ensureIndex({"notes.created_on" : -1})

Мое мнение состоит в том, чтобы попытаться внедрить какнасколько это возможно, а затем выбрать ссылку на другую коллекцию с помощью идентификатора в качестве второй опции, когда необходимо указать ссылку на более общий набор данных, которые являются общими и могут измениться.Например, коллекция документов категории, на которую ссылаются многие другие коллекции.И категория может со временем обновляться.Но в вашем случае заметка всегда должна принадлежать записной книжке

0 голосов
/ 02 апреля 2012

Вы должны спросить себя, какие запросы вам нужно будет выполнить на нем.Подход «по умолчанию» заключается в их внедрении, но есть случаи (которые будут зависеть от того, как вы планируете их использовать), где применим более реляционный подход.Таким образом, простой ответ «вероятно, но вы, вероятно, должны подумать об этом»:)

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