Документите на MongoDB обяснете как да изберете поддиапазон на елемент от масив.
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
Можете да използвате тази техника, за да изберете само съобщенията, които са подходящи за вашия потребителски интерфейс. Не съм сигурен обаче, че това е добър дизайн на схемата. Може да обмислите отделянето на „видимите“ съобщения от „архивираните“ съобщения. Това може да направи заявките малко по-лесни/по-бързи.