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

MongoDB $cond

V MongoDB, $cond operátor agregačního kanálu vyhodnotí booleovský výraz a vrátí jeden ze dvou zadaných návratových výrazů v závislosti na tom, zda je booleovský výraz true nebo false .

$cond Operátor akceptuje dvě syntaxe:longhand syntax a shorthand syntax. Příklady každého z nich jsou uvedeny níže.

Příklad

Předpokládejme, že máme sbírku nazvanou pets s následujícím dokumentem:

{
	"_id" : 1,
	"name" : "Fetch",
	"type" : "Dog",
	"weight" : 20,
	"height" : 30
}

Dlouhá syntaxe

Zde je příklad použití $cond k tomuto dokumentu pomocí dlouhé syntaxe:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        isCanine: { 
          $cond: { if: { "$type": "Dog" }, then: "Yes", else: "No" }
          }
      }
    }
  ]
)

Výsledek:

{ "isCanine" : "Yes" }

V tomto příkladu jsme porovnávali type pole na doslovnou hodnotu.

V následujícím příkladu porovnáme dvě pole v dokumentu.

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        bodyType: { 
          $cond: { 
            if: { 
              $gte: [ "$weight", "$height" ] }, 
              then: "Fat", 
              else: "Skinny" 
              }
          }
      }
    }
  ]
)

Výsledek:

{ "bodyType" : "Skinny" }

Syntaxe zkráceného textu

$cond Operátor také přijímá zkrácenou syntaxi, díky které je váš kód stručnější.

Zkratka v podstatě zahrnuje odstranění if , then a else klíčová slova.

Když to uděláte, musíte výrazy uzavřít do pole.

V tomto příkladu přepíšeme první příklad tak, aby používal zkrácenou syntaxi:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        isCanine: { 
          $cond: [ { "$type": "Dog" }, "Yes", "No" ]
          }
      }
    }
  ]
)

Výsledek:

{ "isCanine" : "Yes" }

A zde je druhý příklad použití těsnopisu:

db.pets.aggregate(
  [
    { $project: { 
        _id: 0,
        bodyType: { 
          $cond: [
              { $gte: [ "$weight", "$height" ] }, 
              "Fat", 
              "Skinny" 
              ]
          }
      }
    }
  ]
)

Výsledek:

{ "bodyType" : "Skinny" }

  1. Rozdělte řetězec na pole podřetězců nebo znaků v MongoDB

  2. Vysvětlení možností časového limitu klienta MongoDB

  3. Ověření MongoDB-CR se nezdařilo

  4. Jak se připojit k instanci Redis (memorystore) ze standardního App Engine společnosti Google (Python 3.7)