MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie frage ich nur Dokumente mit dem neuesten Zeitstempel aus einer Gruppe ab?

Sie mischen hier ein paar Methoden, wenn Sie alles in der Aggregationspipeline erledigen können. Ansonsten ist es nur eine Frage der richtigen Reihenfolge:

db.collection.aggregate([
    {$sort: { createdOn: -1 }},
    {$group: { _id: "$itemId", 
        createdOn: {$first: "$createdOn"},
        field1: {$first: "$field1" },
        field2: {$first: "$field2" }
    }},
    {$match: { field1: "foo" }}
])

Sortieren Sie also zuerst nach den neuesten Dokumenten. Gruppieren Sie nach itemId (Reihenfolge wird für $first beibehalten) und filtern Sie dann mit $match, wenn Sie müssen. Aber Ihre gruppierten Dokumente sind die neuesten.