Bây giờ, tôi có thể nghĩ theo hai cách tiếp cận:
1) Sử dụng khung tổng hợp:
db.log.aggregate([ { $unwind : "$entries" }, { $group : { _id : "$_id", entries : {$sum:1} } } ]);
2) Hoặc bạn có thể thêm một trường vào tài liệu chứa số lượng mục nhập. Vì vậy, mỗi khi bạn đẩy một giá trị mới vào mảng mục, bạn phải tăng bộ đếm. Bản cập nhật sẽ như thế này:
db.log.update({ _id : 123 }, { $push : { entries : 'value' }, $inc : { entriesCount : 1 } })
Rõ ràng, bạn phải đánh đổi ở đây:khung tổng hợp quá đắt cho hoạt động đơn giản này. Nhưng thêm một trường vào tài liệu, mọi bản cập nhật sẽ tăng bộ đếm.
IMHO, bộ đếm trông hợp lý hơn, mặc dù nó có vẻ là một cách giải quyết.