Anda mencampur beberapa metode di sini ketika Anda dapat melakukan semuanya dalam pipa agregasi. Jika tidak, ini hanya masalah mengatur langkah Anda dengan benar:
db.collection.aggregate([
{$sort: { createdOn: -1 }},
{$group: { _id: "$itemId",
createdOn: {$first: "$createdOn"},
field1: {$first: "$field1" },
field2: {$first: "$field2" }
}},
{$match: { field1: "foo" }}
])
Jadi urutkan dulu untuk dokumen terbaru. Grup di itemId
( pesanan akan dipertahankan untuk $first ), lalu filter dengan $match jika Anda harus. Tapi dokumen Anda yang dikelompokkan akan menjadi yang terbaru.