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

MongoDB $literal

    MongoDBでは、$literal 集計パイプライン演算子は、解析せずに値を返します。

    有効な式を受け入れ、解析されていない式を返します。

    $literal 演算子は、MongoDBが誤って式として解釈する可能性がある値があるが、それを望まない場合に役立ちます。

    たとえば、ドル記号を含む金額がある場合、MongoDBはそれを誤ってフィールド名として解釈する可能性があります。 $literalを使用できます MongoDBがそのような式を解釈するのを防ぐため。

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

    { "_id" : 1, "name" : "Homer" }

    $literalを適用する例を次に示します。 :

    db.test.aggregate(
      [
        { $match: { _id: { $in: [ 1 ] } } },
        {
          $project:
            { 
              _id: 0,
              interpreted: "$name",
              literal: { $literal: "$name" }
            }
        }
      ]
    )

    結果:

    { "interpreted" : "Homer", "literal" : "$name" }

    この例では、nameの値を返します。 $nameを使用したフィールド それを参照します。

    リテラル値$nameも返します 、MongoDBにnameを意味するように解釈させることなく フィールド:

    例2

    コレクションに次のドキュメントが含まれているとします。

    { "_id" : 2, "a" : 10, "b" : 5 }

    $literalを使用する別の例を次に示します。 :

    db.test.aggregate(
      [
        { $match: { _id: { $in: [ 2 ] } } },
        {
          $project:
            { 
              _id: 0,
              interpreted: { $multiply: [ "$a", "$b" ] },
              literal: { $literal: { $multiply: [ "$a", "$b" ] } }
            }
        }
      ]
    )

    結果:

    { "interpreted" : 50, "literal" : { "$multiply" : [ "$a", "$b" ] } }

    この場合、返される最初のフィールドには、$multiplyの結果が含まれます。 aに対する演算子 およびb フィールド。

    2番目のフィールドは、$literalに提供したリテラル値を出力するだけです。 オペレーター。


    1. MongoDBを使用したTwitterのようなアプリ

    2. MongoDBは行方不明の日を埋めます

    3. Redis:データベースのサイズ/キーのサイズを表示

    4. Mongo DBは、キーフィールドに応じて最も高い値を持つすべてのレコードを検索します