MongoDB-dokumenterne forklare, hvordan man vælger et underområde af et array-element.
db.dialogs.find({"_id": [dialogId]}, {msgs:{$slice: 5}}) // first 5 comments
db.dialogs.find({"_id": [dialogId]}, {msgs:{$slice: -5}}) // last 5 comments
db.dialogs.find({"_id": [dialogId]}, {msgs:{$slice: [20, 10]}}) // skip 20, limit 10
db.dialogs.find({"_id": [dialogId]}, {msgs:{$slice: [-20, 10]}}) // 20 from end, limit 10
Du kan bruge denne teknik til kun at vælge de beskeder, der er relevante for din brugergrænseflade. Jeg er dog ikke sikker på, at dette er et godt skemadesign. Du vil måske overveje at adskille "synlige" beskeder fra "arkiverede" beskeder. Det kan måske gøre forespørgslen lidt nemmere/hurtigere.