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

Hvordan bruger man MongoDB-aggregat til at få den første i hver gruppe, inklusive nuller?

Du kan bruge $first for at returnere _id værdi i $group scene.

db.people.aggregate([ 
    { '$match': { 'flag': true } }, 
    { '$project': {
        'name': 1,          
        'alias': { 
            '$cond': [
                { '$eq': [ '$alias', null ] }, 
                '$_id', 
                '$alias' 
            ]
        }
    }},
    { '$group': {
        '_id': '$alias',         
        'name':  { '$first': '$name' },          
        'id': { '$first': '$_id' }       
    }}, 
    { '$project': {
        'alias': {
            '$cond': [ 
                { '$eq': [ '$id', '$_id' ] }, 
                null, 
               '$_id' 
            ]
        }, 
        'name': 1,
        '_id': '$id'
    }}
])

Hvilket returnerer:

{ "_id" : "6", "name" : "Zoe", "alias" : "2211293acc82329a" }
{ "_id" : "4", "name" : "Cristina", "alias" : null }
{ "_id" : "2", "name" : "Bob", "alias" : "afa776bea788cf4c" }
{ "_id" : "1", "name" : "Alice", "alias" : null }


  1. Enkel måde at generere kode med Mongoose og Node.js og Underscore?

  2. Henter underdokumenter af geoNear - MongoDB

  3. Big Data Processing Engines – Hvilken skal jeg bruge?:Del 1

  4. mongoDB:hvordan kontrollerer man eksistensen af ​​en diktatnøgle i en indlejret diktat?