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

MongoDB $ ifNull

    MongoDBでは、$ifNull は、nullの代わりに使用する値を指定できる集約パイプライン演算子です。 。

    それが機能する方法は、式と置換式を提供することです。式がnull以外の値と評価された場合、その式が返されます。ただし、式がnull値と評価された場合、$ifNull 置換式の値を返します。

    null値には、未定義の値または欠落しているフィールドのインスタンスが含まれます。

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

    { "_id" : 1, "data" : 250 }
    { "_id" : 2, "data" : -250 }
    { "_id" : 3, "data" : "Bucket" }
    { "_id" : 4, "data" : 0 }
    { "_id" : 5, "data" : ISODate("2021-01-03T23:30:15.100Z") }
    { "_id" : 6, "data" : null }
    { "_id" : 7, "data" : Infinity }
    { "_id" : 8, "data" : -Infinity }

    $ifNullを使用するとどうなりますか dataの演算子 フィールド:

    db.test.aggregate(
       [
         {
           $project:
              {
                result: { $ifNull: [ "$data", "Value not provided" ] }
              }
         }
       ]
    )

    結果:

    { "_id" : 1, "result" : 250 }
    { "_id" : 2, "result" : -250 }
    { "_id" : 3, "result" : "Bucket" }
    { "_id" : 4, "result" : 0 }
    { "_id" : 5, "result" : ISODate("2021-01-03T23:30:15.100Z") }
    { "_id" : 6, "result" : "Value not provided" }
    { "_id" : 7, "result" : Infinity }
    { "_id" : 8, "result" : -Infinity }

    null値を持つフィールドは1つだけであることがわかります。したがって、"Value not provided"を返したのはこのフィールドだけでした。 。

    未定義のフィールドと欠落しているフィールド

    前述のように、未定義の値と欠落しているフィールドはnull値として扱われます。

    コレクションに次のドキュメントを追加するとします。

    { "_id" : 9, "data" : undefined }
    { "_id" : 10, "name" : "Homer" }

    この場合、ドキュメント9にはundefinedがあります データフィールドにありますが、ドキュメント10にはdataさえありません フィールド。

    $ifNullを適用すると次のようになります それらのドキュメントへ:

    db.test.aggregate(
       [
         { $match: { _id: { $in: [ 9, 10 ] } } },
         {
           $project:
              {
                result: { $ifNull: [ "$data", "Value not provided" ] }
              }
         }
       ]
    )

    結果:

    { "_id" : 9, "result" : "Value not provided" }
    { "_id" : 10, "result" : "Value not provided" }

    1. PrometheusとClusterControlを使用してMongoDBを監視する方法

    2. 配列ソースを使用してmongodbの配列サブセットを取得します

    3. 参照するためのMongoDBのベストプラクティス

    4. ssh経由でMongoDBを同期する