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
に提供したリテラル値を出力するだけです。 オペレーター。