Dokumen MongoDB jelaskan cara memilih subrange dari elemen array.
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
Anda dapat menggunakan teknik ini untuk hanya memilih pesan yang relevan dengan UI Anda. Namun, saya tidak yakin bahwa ini adalah desain skema yang bagus. Anda mungkin ingin mempertimbangkan untuk memisahkan pesan yang "terlihat" dari pesan yang "diarsipkan". Ini mungkin membuat kueri sedikit lebih mudah/lebih cepat.