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

MongoDB $ifNull

W MongoDB $ifNull jest operatorem potoku agregacji, który umożliwia określenie wartości do użycia zamiast null .

Sposób, w jaki to działa, polega na podaniu wyrażenia i wyrażenia zastępczego. Jeśli wynikiem wyrażenia jest wartość różna od null, to wyrażenie jest zwracane. Ale jeśli wynikiem wyrażenia jest wartość null, $ifNull zwraca wartość wyrażenia zastępującego.

Wartość null obejmuje wystąpienia niezdefiniowanych wartości lub brakujących pól.

Przykład

Załóżmy, że mamy kolekcję o nazwie test z następującymi dokumentami:

{ "_id" : 1, "data" : 250 }
{ "_id" : 2, "data" : -250 }
{ "_id" : 3, "data" : "Bucket" }
{ "_id" : 4, "data" : 0 }
{ "_id" : 5, "data" : ISODate("2021-01-03T23:30:15.100Z") }
{ "_id" : 6, "data" : null }
{ "_id" : 7, "data" : Infinity }
{ "_id" : 8, "data" : -Infinity }

Oto, co się stanie, jeśli użyjemy $ifNull operator na data pole:

db.test.aggregate(
   [
     {
       $project:
          {
            result: { $ifNull: [ "$data", "Value not provided" ] }
          }
     }
   ]
)

Wynik:

{ "_id" : 1, "result" : 250 }
{ "_id" : 2, "result" : -250 }
{ "_id" : 3, "result" : "Bucket" }
{ "_id" : 4, "result" : 0 }
{ "_id" : 5, "result" : ISODate("2021-01-03T23:30:15.100Z") }
{ "_id" : 6, "result" : "Value not provided" }
{ "_id" : 7, "result" : Infinity }
{ "_id" : 8, "result" : -Infinity }

Widzimy, że tylko jedno pole miało wartość null i dlatego jako jedyne zwróciło "Value not provided" .

Niezdefiniowane i brakujące pola

Jak wspomniano, niezdefiniowane wartości i brakujące pola są traktowane jako wartości puste.

Załóżmy, że do naszej kolekcji dodamy następujące dokumenty:

{ "_id" : 9, "data" : undefined }
{ "_id" : 10, "name" : "Homer" }

W tym przypadku dokument 9 ma undefined w polu danych, ale dokument 10 nie zawiera nawet data pole.

Oto, co się dzieje, gdy zastosujemy $ifNull do tych dokumentów:

db.test.aggregate(
   [
     { $match: { _id: { $in: [ 9, 10 ] } } },
     {
       $project:
          {
            result: { $ifNull: [ "$data", "Value not provided" ] }
          }
     }
   ]
)

Wynik:

{ "_id" : 9, "result" : "Value not provided" }
{ "_id" : 10, "result" : "Value not provided" }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB — nieautoryzowany użytkownik administratora

  2. Jak uzyskać datę utworzenia kolekcji MongoDB przy użyciu sterownika MongoDB C#?

  3. MongoDB a MySQL

  4. Mongodb $lookup dynamiczna kolekcja

  5. MongoDB $dateToParts