sql >> データベース >  >> NoSQL >> MongoDB

MongoDB $ cond

    MongoDBでは、$cond 集計パイプライン演算子はブール式を評価し、ブール式がtrueであるかどうかに応じて、指定された2つの戻り式のいずれかを返します。 またはfalse

    $cond 演算子は、ロングハンド構文とショートハンド構文の2つの構文を受け入れます。それぞれの例を以下に示します。

    petsというコレクションがあるとします。 次のドキュメントで:

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

    ロングハンド構文

    $condを適用する例を次に示します。 長い構文を使用してそのドキュメントに:

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

    結果:

    { "isCanine" : "Yes" }

    この例では、typeを比較しました フィールドをリテラル値に変換します。

    次の例では、ドキュメント内の2つのフィールドを比較します。

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

    結果:

    { "bodyType" : "Skinny" }

    速記構文

    $cond 演算子は、コードをより簡潔にする簡略構文も受け入れます。

    省略形は基本的にifを削除することを含みます 、then 、およびelse キーワード。

    これを行うときは、式を配列で囲む必要があります。

    この例では、最初の例を書き直して、省略構文を使用します。

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

    結果:

    { "isCanine" : "Yes" }

    そして、これが速記を使用した2番目の例です:

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

    結果:

    { "bodyType" : "Skinny" }

    1. C ++プログラム内でRedisを使用するにはどうすればよいですか?

    2. ネイティブMongoDBマスキング(3番目の方法)

    3. 春のデータを使用してmongoでjsファイルを実行する方法

    4. Redis / Jedis-パターンで削除しますか?