Du blander et par metoder her, når du kan gøre alt i aggregeringspipelinen. Ellers er det bare et spørgsmål om at få dine trin i den rigtige rækkefølge:
db.collection.aggregate([
{$sort: { createdOn: -1 }},
{$group: { _id: "$itemId",
createdOn: {$first: "$createdOn"},
field1: {$first: "$field1" },
field2: {$first: "$field2" }
}},
{$match: { field1: "foo" }}
])
Så sorter først efter de nyeste dokumenter. Grupper på itemId
(rækkefølgen vil blive opretholdt for $first), og filtrer derefter med $match, hvis du skal. Men dine grupperede dokumenter vil være de seneste.