sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $kond

I MongoDB, $cond aggregeringspipeline-operatorn utvärderar ett booleskt uttryck och returnerar ett av de två angivna returuttrycken, beroende på om det booleska uttrycket är true eller false .

$cond operatorn accepterar två syntaxer:en långhandssyntax och en stenografisyntax. Exempel på varje är nedan.

Exempel

Anta att vi har en samling som heter pets med följande dokument:

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

Longhand-syntax

Här är ett exempel på hur du använder $cond till det dokumentet med hjälp av långhandssyntaxen:

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

Resultat:

{ "isCanine" : "Yes" }

I det här exemplet jämförde vi type fältet till ett bokstavligt värde.

I följande exempel jämför vi två fält i dokumentet.

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

Resultat:

{ "bodyType" : "Skinny" }

Shorthand-syntax

$cond operatorn accepterar också en stenografisyntax som gör din kod mer kortfattad.

Stenografin innebär i princip att if tas bort , then och else sökord.

När du gör detta måste du omsluta uttrycken i en array.

I det här exemplet skriver vi om det första exemplet för att använda stenografisyntaxen:

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

Resultat:

{ "isCanine" : "Yes" }

Och här är det andra exemplet med stenografi:

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

Resultat:

{ "bodyType" : "Skinny" }

  1. MongoDB $binarySize

  2. Vilka är de största skillnaderna mellan Redis Pub/Sub och Redis Stream?

  3. Varför är en enda Jedis-instans inte trådsäker?

  4. Hur avgör man Redis minnesläcka?