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

MongoDB $ cmp

    MongoDBでは、$cmp 集計パイプライン演算子は2つの値を比較し、-1のいずれかを返します 、1 、または0 、最初の値が最初の値よりも小さいか、大きいか、等しいかによって異なります。

    具体的には、$cmp 演算子は次を返します:

    • -1 最初の値が2番目の値よりも小さい場合。
    • 1 最初の値が2番目の値より大きい場合。
    • 0 2つの値が等しい場合。

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

    { "_id" : 1, "a" : 2, "b" : 2 }
    { "_id" : 2, "a" : 2, "b" : 3 }
    { "_id" : 3, "a" : 3, "b" : 2 }

    $cmpを使用できます aを比較する演算子 およびb フィールド:

    db.data.aggregate(
      [
        { $project: { 
            _id: 0,
            a: 1,
            b: 1,
            result: { $cmp: [ "$a", "$b" ] }
          }
        }
      ]
    )

    結果:

    { "a" : 2, "b" : 2, "result" : 0 }
    { "a" : 2, "b" : 3, "result" : -1 }
    { "a" : 3, "b" : 2, "result" : 1 }

    異なるタイプの比較

    $cmp 演算子は、異なるタイプの値に対して指定されたBSON比較順序を使用して、値とタイプの両方を比較します。

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

    { "_id" : 4, "a" : ISODate("2021-01-03T23:30:15.100Z"), "b" : ISODate("2019-12-08T04:00:20.112Z") }
    { "_id" : 5, "a" : 2, "b" : ISODate("2019-12-08T04:00:20.112Z") }
    { "_id" : 6, "a" : ISODate("2019-12-08T04:00:20.112Z"), "b" : 2 }
    { "_id" : 7, "a" : null, "b" : 2 }
    { "_id" : 8, "a" : 2, "b" : null }
    { "_id" : 9, "a" : null, "b" : null }
    { "_id" : 10, "a" : Infinity, "b" : 3 }
    { "_id" : 11, "a" : 2, "b" : Infinity }
    { "_id" : 12, "a" : Infinity, "b" : Infinity }

    $cmpを適用すると次のようになります 新しいドキュメントへ:

    db.data.aggregate(
      [
        { $match: { _id: { $nin: [ 1, 2, 3 ] } } },
        { $project: { 
            a: 1,
            b: 1,
            result: { $cmp: [ "$a", "$b" ] }
          }
        }
      ]
    ).pretty()

    結果:

    {
    	"_id" : 4,
    	"a" : ISODate("2021-01-03T23:30:15.100Z"),
    	"b" : ISODate("2019-12-08T04:00:20.112Z"),
    	"result" : 1
    }
    {
    	"_id" : 5,
    	"a" : 2,
    	"b" : ISODate("2019-12-08T04:00:20.112Z"),
    	"result" : -1
    }
    {
    	"_id" : 6,
    	"a" : ISODate("2019-12-08T04:00:20.112Z"),
    	"b" : 2,
    	"result" : 1
    }
    { "_id" : 7, "a" : null, "b" : 2, "result" : -1 }
    { "_id" : 8, "a" : 2, "b" : null, "result" : 1 }
    { "_id" : 9, "a" : null, "b" : null, "result" : 0 }
    { "_id" : 10, "a" : Infinity, "b" : 3, "result" : 1 }
    { "_id" : 11, "a" : 2, "b" : Infinity, "result" : -1 }
    { "_id" : 12, "a" : Infinity, "b" : Infinity, "result" : 0 }

    1. SpringRedis-application.propertiesファイルから構成を読み取ります

    2. MongoError:フィルターパラメーターはオブジェクトである必要があります

    3. MongoDB上でCouchDBを使用する場合、またはその逆の場合

    4. カナダのMongoDB-as-a-Service