Mặc dù câu trả lời được đề cập bởi @prasad_ có vẻ hiệu quả, nhưng $ unwind đã có tùy chọn Mongodb 3.2 includeArrayIndex giúp bạn đạt được điều đó dễ dàng hơn:
db.collection.aggregate([
{
$group: {
_id: null,
data: {
$push: "$$ROOT"
}
}
},
{
$unwind: {
path: "$data",
includeArrayIndex: "counter",
}
},
{
$replaceRoot: {
newRoot: {
$mergeObjects: [
"$data",
{
counter: {
$add: [
"$counter",
1
]
}
}
]
}
}
}
])
Giai đoạn cuối ở đây chỉ để định hình lại các tài liệu của bạn và thêm 1 vào mỗi bộ đếm, vì nó dựa trên 0 (dựa trên chỉ mục mảng)
Bạn có thể kiểm tra nó tại đây.