MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Obtenez les derniers documents avec des critères distincts

Vous pouvez utiliser le cadre d'agrégation pour y parvenir :

 db.collection.aggregate(
          [
             {$match:
                  {action:'entry'}
             },
             {$group:
                  {_id:'$name',
                   first:
                         {$max:'$timestamp'}
                  }
             }
          ])

Si vous êtes susceptible d'inclure d'autres champs dans les résultats, vous pouvez utiliser le $first opérateur

 db.collection.aggregate(
          [
             {$match:
                  {action:'entry'}
             },
             {$sort:
                  {name:1, timestamp:-1}
             },
             {$group:
                  {_id:'$name',
                   timestamp: {$first:'$timestamp'},
                   otherField: {$first:'$otherField'},
                  }
             }
          ])