sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $kond

I MongoDB er $cond aggregeringspipeline-operator evaluerer et boolesk udtryk og returnerer et af de to specificerede returudtryk, afhængigt af om det boolske udtryk er true eller false .

$cond operatoren accepterer to syntakser:en langhåndssyntaks og en stenografisyntaks. Eksempler på hver er nedenfor.

Eksempel

Antag, at vi har en samling kaldet pets med følgende dokument:

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

Longhand-syntaks

Her er et eksempel på anvendelse af $cond til det dokument ved hjælp af langhåndssyntaksen:

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

Resultat:

{ "isCanine" : "Yes" }

I dette eksempel sammenlignede vi type felt til en bogstavelig værdi.

I det følgende eksempel sammenligner vi to felter i dokumentet.

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

Resultat:

{ "bodyType" : "Skinny" }

Shorthand-syntaks

$cond operatoren accepterer også en stenografisyntaks, der gør din kode mere kortfattet.

Stenografien involverer grundlæggende at fjerne if , then og else søgeord.

Når du gør dette, skal du omslutte udtrykkene i et array.

I dette eksempel omskriver vi det første eksempel for at bruge stenografisyntaksen:

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

Resultat:

{ "isCanine" : "Yes" }

Og her er det andet eksempel med stenografi:

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

Resultat:

{ "bodyType" : "Skinny" }

  1. Indstilling af et dynamisk felt i Ohm / Redis

  2. MongoDB Tekstsøgning OG flere søgeord

  3. tæl array-forekomster på tværs af alle dokumenter med mongo

  4. Migrering af socket.io fra 0.9.x til 1.x, problemer med at konfigurere RedisStore