sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $ifNull

V MongoDB $ifNull je operátor agregačního kanálu, který vám umožňuje zadat hodnotu, která se má použít namísto null .

Funguje to tak, že zadáte výraz a náhradní výraz. Pokud se výraz vyhodnotí jako nenulová hodnota, vrátí se tento výraz. Ale pokud se výraz vyhodnotí jako nulová hodnota, $ifNull vrátí hodnotu nahrazujícího výrazu.

Nulová hodnota zahrnuje výskyty nedefinovaných hodnot nebo chybějících polí.

Příklad

Předpokládejme, že máme kolekci nazvanou test s následujícími dokumenty:

{ "_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 }

Co se stane, když použijeme $ifNull operátor na data pole:

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

Výsledek:

{ "_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 }

Vidíme, že pouze jedno pole mělo hodnotu null, a proto bylo jediné, které vrátilo "Value not provided" .

Nedefinovaná a chybějící pole

Jak již bylo zmíněno, nedefinované hodnoty a chybějící pole jsou považovány za hodnoty null.

Předpokládejme, že do naší sbírky přidáme následující dokumenty:

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

V tomto případě má dokument 9 undefined v datovém poli, ale dokument 10 nemá ani data pole.

Zde je to, co se stane, když použijeme $ifNull k těm dokumentům:

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

Výsledek:

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

  1. Vyžaduje Action Cable 5 Redis?

  2. Konfigurace Laravel Redis

  3. Jak mohu vytvořit program pomocí c++ ovladače mongodb?

  4. Tipy pro ukládání záloh MongoDB v cloudu