MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да използвате агрегата MongoDB, за да получите първата от всяка група, включително нули?

Можете да използвате $first за да върнете _id стойност в $group етап.

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

Което връща:

{ "_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. Не може да се свърже с MongoDB чрез node.js в Docker

  2. C# MongoDB - Изтеглете елемент от масива на вложен документ въз основа на ID

  3. Pymongo/bson:Преобразуване на python.cursor.Cursor обект в сериализуем/JSON обект

  4. Заявка за масив от вложени документи за най-висока стойност на полето

  5. Неразпознато поле:грешка „ntoreturn“ в documenDB