MongoDB में, $literal
एकत्रीकरण पाइपलाइन ऑपरेटर पार्स किए बिना एक मान देता है।
यह किसी भी मान्य व्यंजक को स्वीकार करता है, और बिना पार्स किए व्यंजक देता है।
$literal
ऑपरेटर तब उपयोगी हो सकता है जब आपके पास एक मान होता है जिसे MongoDB अनजाने में एक अभिव्यक्ति के रूप में व्याख्या कर सकता है, लेकिन आप इसे नहीं चाहते हैं।
उदाहरण के लिए, यदि आपके पास एक मौद्रिक राशि है जिसमें एक डॉलर का चिह्न शामिल है, तो MongoDB अनजाने में इसे एक फ़ील्ड नाम के रूप में व्याख्या कर सकता है। आप $literal
. का उपयोग कर सकते हैं MongoDB को ऐसे भावों की व्याख्या करने से रोकने के लिए।
उदाहरण
मान लीजिए हमारे पास test
. नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{ "_id" : 1, "name" : "Homer" }
यहां $literal
applying लागू करने का एक उदाहरण दिया गया है :
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
फ़ील्ड।
दूसरा फ़ील्ड केवल उस शाब्दिक मान को आउटपुट करता है जो हमने $literal
. को प्रदान किया था ऑपरेटर।