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

Uwzględnij pola w agregacie mongodb

Nie obejmuje pola, ponieważ nie prosiłeś o zwrot pola. To, czego tutaj brakuje, to użycie $first lub podobny "akumulator" w celu zwrócenia elementu podczas $group .

Ponadto, jeśli nie chcesz pustego adresu e-mail, wyklucz go w $match etap potoku, ponieważ jest to najbardziej wydajna rzecz do zrobienia.

db.collection.aggregate([
    { $match: { branch: "CO", "customerEmail": { "$ne": "" } } },
    { $group:
        {
            _id: { customer:"$customerID"},
            email: { "$first": "$customerEmail" }
        }
    }
]);

„Potok” zwraca tylko „wyjście” z etapów, takich jak $group lub $project że faktycznie o to prosisz. Podobnie jak „potok uniksowy” | operator, jedyne rzeczy dostępne na "następnym etapie" to to, co wyprowadzasz.

Powinno to wynikać po prostu z:

db.collection.aggregate([
    { $match: { branch: "CO" } },   
    { $group:
        {
            _id: { customer:"$customerID"}
        }
    }
]);

Lub nawet:

db.collection.aggregate([
    { $match: { branch: "CO" } },   
    { $project:
        {
            _id: { customer:"$customerID"}
        }
    }
]);

Który zwraca oczywiście tylko _id wartość, ponieważ to wszystko, o co prosiłeś.

Na dowolnym etapie potoku masz dostęp tylko do danych, które zostały „wydane na poprzednim etapie”. W $group oznacza to tylko _id dla klucza grupującego i tego, co zostało określone „wprost” używając prawidłowego "akumulatora" za wszelkie inne nieruchomości, które chcesz zwrócić. Dowolny akumulator (który jest poprawny dla "ciągu" tutaj) zrobi, ale wszystko poza _id musi użyj "akumulatora" .

Proponuję poświęcić trochę czasu na przyjrzenie się wszystkim operatorom agregacji i co właściwie robią. Istnieje przykładowe użycie z każdym operatorem




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. update_attributes zwraca zawsze prawdę, nawet jeśli zagnieżdżone atrybuty są nieprawidłowe

  2. Jaki jest maksymalny rozmiar kolekcji w mongodb

  3. 3 sposoby na porzucenie indeksu w MongoDB

  4. Sink Kafka Stream do MongoDB za pomocą PySpark Structured Streaming

  5. mongodb Failed:błąd łączenia z serwerem db:brak osiągalnych serwerów