sql >> Databáze >  >> NoSQL >> MongoDB

Jak použít agregát MongoDB k získání prvního z každé skupiny, včetně null?

Můžete použít $first vrátíte _id hodnotu ve $group fázi.

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'
    }}
])

Což vrátí:

{ "_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. Najděte v SQL hodnoty, které neobsahují čísla

  2. Jak odstranit minimální hodnotu v mongodb pro skupinu?

  3. Jak agregovat známky všech předmětů v mongoDB

  4. NodeJS + MongoDB:insertOne() - získat vložený dokument z result.ops