このバージョンのドキュメントはアーカイブされており、サポートされなくなりました。6.0 配置をアップグレードするには、 MongoDB 7.0 のアップグレード手順 を参照してください。
定義
$literal解析せずに値を返します。 集計パイプラインが式として解釈できる値には、 を使用します。
$literal式の構文は次のとおりです。{ $literal: <value> }
動作
<value>が式である場合、 $literalは式を評価せず、代わりに解析されていない式を返します。
例 | 結果 |
|---|---|
|
|
|
|
例
$をリテラルとして扱う
式では、ドル記号$はフィールドパスとして評価されます。フィールドへのアクセスを提供します。 たとえば、 $eq式$eq: [
"$price", "$1" ]は、ドキュメント内のpriceという名前のフィールドの値と1という名前のフィールドの値との間で等価性チェックを実行します。
次の例では、 $literal式を使用して、ドル記号"$1"を含む string を定数値として扱います。
storeInventory コレクションには、次のドキュメントがあります。
db.storeInventory.insertMany( [ { "_id" : 1, "item" : "napkins", price: "$2.50" }, { "_id" : 2, "item" : "coffee", price: "1" }, { "_id" : 3, "item" : "soap", price: "$1" } ] )
db.storeInventory.aggregate( [ { $project: { costsOneDollar: { $eq: [ "$price", { $literal: "$1" } ] } } } ] )
この操作では、 priceフィールドの値が string と等しいかどうかを示すブール値を持つcostsOneDollar "$1"名前のフィールドがプロジェクションされます。
{ "_id" : 1, "costsOneDollar" : false } { "_id" : 2, "costsOneDollar" : false } { "_id" : 3, "costsOneDollar" : true }
値を持つ新しいフィールドのプロジェクション 1
$projectステージでは、式<field>: 1を使用して出力に<field>を含めます。 次の例では、 $literalを使用して、 1の値に設定された新しいフィールドを返します。
books コレクションには、次のドキュメントがあります。
db.books.insertMany([ { "_id" : 1, "title" : "Dracula", "condition": "new" }, { "_id" : 2, "title" : "The Little Prince", "condition": "new" } ])
{ $literal: 1 }式は、値1に設定された新しいeditionNumberフィールドを返します。
db.books.aggregate( [ { $project: { "title": 1, "editionNumber": { $literal: 1 } } } ] )
この操作の結果、次のドキュメントが作成されます。
{ "_id" : 1, "title" : "Dracula", "editionNumber" : 1 } { "_id" : 2, "title" : "The Little Prince", "editionNumber" : 1 }