MongoDB Структура для приложения сообщений

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

Мне в основном нужны три (или четыре) типа объектов:

The user (username, email, password, etc.) The contacts list (containing different contacts or contacts groups) The conversation (a conversation is a collection of messages between some persons) The message (contains the message body, some timestamp and the creator.)

Моя идея заключалась в том, чтобы вставить контакты в пользовательский документ и вставить сообщения в документ беседы:

1. User

{
    username: 'dev.puS',
    usernameCanonical: 'dev.pus', // used for unique constraints
    email: '[email protected],
    emailCanonical: '[email protected],
    salt: 'some hash',
    password: 'hash with salt',
    logs: { last_login: 12.06.2008, last_password_reset: 04.03.2007 },
    state: { online: true, available: false },
    contacts: [ user_id1, user_id2, user_id3 ]
}

2. Conversation

{
    members: [ user_id1, user_id2 ],
    messages: [
        { author: user_2, body: 'Hi what's up' },
        { author: user_1, body: 'Nothing out here :(' },
        { author: user_2, body: 'Whanna ask some question on stackoverflow' },
        { author: user_1, body: 'Okay, lets go' }
    ]
}

Что вы думаете об этой схеме?

Я думаю, что было бы лучше держать их отдельно (поэтому каждый документ для него сам по себе), потому что каждый документ имеет разную частоту обновления. Но я действительно не имею никакого опыта, так что было бы хорошо услышать некоторые советы :)

С уважением

Ответы на вопрос(3)

Ваш ответ на вопрос