я пытаюсь создать приложение чата .. я не уверен, как структурировать мою схему mongodb ..
в настоящее время я использую эту схему .. имя коллекции: разговоры
{
conversation: {
id: 1,
name: test
},
messages: [
{
_id: mongoid("123"),
userID: 1,
message: "test message"
date: date..,
status: 1,
pins: [2, 3] //message pin by user ids
mentions: [4, 5],
replyMsgID: mongoid(456)
},
...
],
users: [
{
userID: 1,
blocked: 1,
lastActiveTime: dateTime,
},
...
]
}
...
я думаю о другой схеме, подобной этой ...
{
conversation: {
id: 1,
name: test
},
messages: [
{
_id: mongoid("999")
msgID: mongoID("123")
},
{
_id: mongoid("888")
msgID: mongoID("456")
},
...
],
users: [
{
userID: 1,
blocked: 1,
lastActiveTime: dateTime,
},
...
]
}
коллекция сообщений ..
messages: [
{
_id: mongoid("123"),
userID: 1,
message: "test message"
date: date..,
status: 1,
pins: [2, 3] //message pin by user ids
mentions: [4, 5],
replyMsgID: mongoid(456),
conversationID: 1
},
...
]
Я новичок в mongodb, и я запутался, какую схему следует использовать дляМасштабируемость для чататолько 1 сообщение или только один пользователь, монго вернет весь документ с тысячами сообщений
проблема со 2-й схемой ... мне нужно будет объединить две коллекции с агрегатной структурой и, возможно, потребуется использовать $ unwind, $ group много ... что, я думаю, будет очень сильно влиять на производительность ... чтобы создать новое сообщение, мне сначала нужно будет вставить сообщение в коллекцию сообщений, а затем вставитьвновь добавленное сообщение в поле сообщений свойства коллекций разговоров, то же самое относится и к удалению .. так много запросов ..: |
было бы очень полезно, если бы кто-то мог помочь мне выбрать схему .. или создатьлучшая схема ..
заранее спасибо :)