sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan forespørger man kun dokumenter med det seneste tidsstempel fra en gruppe?

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.



  1. MongoDB:kan ikke bruge en markør til at iterere gennem alle data

  2. Angivelse af Mongo-forespørgselsparametre fra klientcontroller (MEAN.JS)

  3. golang + redis præstationsproblem med samtidighedsplanlægning

  4. Hvordan får jeg negationen af ​​en mongoid-forespørgsel?