Лучший / самый быстрый способ получить общее количество вложенных документов - создать дополнительное поле и пересчитать количество после каждого обновления / вставки.Документ будет выглядеть следующим образом:
{
_id: 1,
comments: [],
commentsCount: 5
}
Тогда вы можете просто включить поле commentsCount
, когда делаете срез:
//this query will include only 10 comments _id and comments count of root document
db.articles.find({}, {comments:{$slice: [20, 10]}, _id:1, commentsCount: 1})
И на самом деле другого способа подсчета общего количества внедренных документов не существует.(я не говорю о м / р, потому что это медленно для запросов в реальном времени)