MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak użyć agregatu MongoDB, aby uzyskać pierwszą z każdej grupy, w tym wartości null?

Możesz użyć $first aby zwrócić _id wartość w $group scena.

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

Który powraca:

{ "_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. Muszę pobrać obiekt MongoDB tylko za pomocą filtrowanego elementu tablicy

  2. Połącz kolekcję Mongodb i dyktaturę Pythona

  3. Wiele prób instancji serwera podczas działania jest

  4. Jakiś sposób na uzyskanie zmodyfikowanego IDS z operacji zbiorczych mongodb przy użyciu mongoose?

  5. najlepsza praktyka dla kategorii zagnieżdżonych w Mongo i Meteor