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

MongoDB $cond

W MongoDB $cond operator potoku agregacji oblicza wyrażenie logiczne i zwraca jedno z dwóch określonych wyrażeń zwracanych, w zależności od tego, czy wyrażenie logiczne jest true lub false .

$cond operator akceptuje dwie składnie:składnię odręczną i składnię skróconą. Przykłady każdego z nich znajdują się poniżej.

Przykład

Załóżmy, że mamy kolekcję o nazwie pets z następującym dokumentem:

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

Składnia odręczna

Oto przykład zastosowania $cond do tego dokumentu przy użyciu składni odręcznej:

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

Wynik:

{ "isCanine" : "Yes" }

W tym przykładzie porównaliśmy type pole na wartość dosłowną.

W poniższym przykładzie porównujemy dwa pola w dokumencie.

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

Wynik:

{ "bodyType" : "Skinny" }

Składnia skrótów

$cond operator akceptuje również skróconą składnię, która sprawia, że ​​kod jest bardziej zwięzły.

Skrót zasadniczo polega na usunięciu if , then i else słowa kluczowe.

Kiedy to zrobisz, musisz umieścić wyrażenia w tablicy.

W tym przykładzie przepisujemy pierwszy przykład, używając skróconej składni:

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

Wynik:

{ "isCanine" : "Yes" }

A oto drugi przykład ze skrótem:

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

Wynik:

{ "bodyType" : "Skinny" }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest najlepszy graficzny interfejs użytkownika MongoDB? — Aktualizacja 2019

  2. MongoDB/PyMongo:Odpytywanie wielu kryteriów - nieoczekiwane wyniki

  3. Najlepsze zasoby MongoDB

  4. Node.js — tworzenie relacji z Mongoose

  5. MongoDB $setDifference