Въз основа на вашите примерни данни за приложението за съобщения, това, което бихте могли да направите, е да имате две колекции:разговор и съобщения. Когато връзката е една, разговорът има много съобщения.
Conversation:
{ id: 123
participants: ['john', 'marry'],
}
Message:
{ sender: 'john',
content: 'howdy',
time_created: new Date(),
converstationId: 123
},
{ sender: 'marry',
content: 'good u',
time_created: new Date(),
converstationId: 123
},
Създаването на ново съобщение за документ би било по-добре в този случай, тъй като тогава можете да имате две приложения (1 за Джон и 1 за женитба), без да се справяте с възможността двамата да актуализират един и същ документ. Те просто споделят едно и също разговорна сесия.
Освен това, ако разговорът е единичен документ, може да се окажете с много голям документ. (Загриженост за растежа на документа)
Можете да научите повече за моделирането на данни за този документ на mongodb
http://docs.mongodb.org/manual/core/data-modeling-introduction/
Вижте също MongoDB:Socialite за примери/дискусия за случаи на използване на социални мрежи.
Надявам се да помогне. Наздраве.