sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik alleen documenten opvragen met de laatste tijdstempel van een groep?

Je combineert hier een paar methoden terwijl je alles in de aggregatiepijplijn kunt doen. Anders is het gewoon een kwestie van je stappen in de juiste volgorde zetten:

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

Sorteer dus eerst op de nieuwste documenten. Groeperen op de itemId ( bestelling wordt gehandhaafd voor $first ), en filter vervolgens met $match als dat moet. Maar uw gegroepeerde documenten zijn de nieuwste.



  1. MongoDump-query met BinData

  2. Mongo-query-uitvoer afdrukken naar een bestand terwijl deze zich in de mongo-shell bevindt

  3. native update in Sails with Mongo werkt niet met ObjectId

  4. Heroku harktaak niet-geïnitialiseerde constante voor MongoMapper-model