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

Jak mogę zachować wartości o zerowej długości podczas fazy $unwind zagregowanego potoku w Mongo?

Zmodyfikuj swój project etap w potoku jak poniżej:

projection etap wykonuje następujące dwie rzeczy:

  • Jeśli tablica elementów ma wartość null lub does not exist , oblicza wartość pola elementu jako [] (pusta tablica.)
  • Dalej sprawdza, czy size właśnie obliczonych items pole to 0 , jeśli to 0 , a następnie zmienia jego wartość na tablicę z domyślnym obiektem.

Kod etapu:

db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
           "items":{$cond:[
                          {$eq:[{$size:{$ifNull:["$items",[]]}},0]},
                          [{"quantity":0,"price":0}],
                          "$items"
                          ]}}},
{$unwind:"$items"},
...
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przestarzały analizator treści?

  2. Jak zbudować skracacz adresów URL za pomocą Node.js i MongoDB

  3. Mongoose:czy niestandardowy _id musi być zadeklarowany jako indeks i być unikalny?

  4. MongoDB $bsonSize

  5. Mongo-go-driver error Nowy błąd klienta ClientOptions w argumencie mongo.NewClient