MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara menggunakan agregat MongoDB untuk mendapatkan yang pertama dari setiap grup, termasuk nol?

Anda dapat menggunakan $first untuk mengembalikan _id nilai di $group panggung.

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

Yang mengembalikan:

{ "_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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor meneruskan id ke tautan

  2. Bagaimana cara memproyeksikan nilai yang diperbarui hanya menggunakan findOneAndUpdate dalam array tersemat Mongoose?

  3. Cara yang baik untuk menangani MongoError:kumpulan instance server dihancurkan

  4. XFS vs EXT4 – Membandingkan Kinerja MongoDB di AWS EC2

  5. Bagaimana menemukan dokumen mongo dengan bidang yang sama