Mongodb схема для приложения чата - PullRequest
0 голосов
/ 24 октября 2018

я пытаюсь создать приложение чата .. я не уверен, как структурировать мою схему 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 много ... что, я думаю, будет очень сильно влиять на производительность ... чтобы создать новое сообщение, мне сначала нужно будет вставить сообщение в коллекцию сообщений, а затем вставитьвновь добавленное сообщение в поле сообщений свойства коллекций разговоров, то же самое относится и к удалению .. так много запросов ..: |

было бы очень полезно, если бы кто-то мог помочь мне выбрать схему .. или создатьлучшая схема ..

заранее спасибо :)

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