sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose Aggregate :begränsa antalet poster i $group

Du kan använda $first för att ta värden från det första dokumentet i varje grupp i en sorterad pipeline:

var allids = ['xxxxx','yyyy'];
Game.aggregate([
    {$match: {'oid': {$in:allids}}},
    {$sort: {'number_plays': -1}},
    {$group: {
        _id: '$oid', 
        game_name: {$first: "$game_name"}, 
        game_id: {$first: "$game_id"}, 
        number_plays: {$first:"$number_plays"}
    }}
], function(err,list){
    console.log(list);
    res.end();
});

Eftersom du har sorterat på number_plays fallande i föregående steg av pipelinen, kommer detta att ta värdena från varje oid gruppens dokument med det högsta number_plays .




  1. Mongodb:Hitta alla dokument där minst ett arrayelement inte matchar?

  2. MongoDB 2.6 Indexuppsättning, fråga med $or, $in, med limit och sort

  3. Hur kan MongoDB dataSize vara större än storageSize?

  4. Minska utförandetiden för jobb med sidekiq