MongoDB-dokumenten förklara hur man väljer ett underområde av ett arrayelement.
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 använda den här tekniken för att bara välja de meddelanden som är relevanta för ditt användargränssnitt. Jag är dock inte säker på att detta är en bra schemadesign. Du kanske vill överväga att skilja ut "synliga" meddelanden från "arkiverade" meddelanden. Det kan göra sökningen lite lättare/snabbare.