In MongoDB das $literal
Der Aggregations-Pipeline-Operator gibt einen Wert ohne Parsing zurück.
Es akzeptiert jeden gültigen Ausdruck und gibt den ungeparsten Ausdruck zurück.
Das $literal
-Operator kann nützlich sein, wenn Sie einen Wert haben, den MongoDB versehentlich als Ausdruck interpretieren könnte, dies aber nicht möchten.
Wenn Sie beispielsweise einen Geldbetrag haben, der ein Dollarzeichen enthält, könnte MongoDB dies versehentlich als Feldnamen interpretieren. Sie können $literal
verwenden um zu verhindern, dass MongoDB solche Ausdrücke interpretiert.
Beispiel
Angenommen, wir haben eine Sammlung namens test
mit folgendem Dokument:
{ "_id" : 1, "name" : "Homer" }
Hier ist ein Beispiel für die Anwendung von $literal
:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 1 ] } } },
{
$project:
{
_id: 0,
interpreted: "$name",
literal: { $literal: "$name" }
}
}
]
)
Ergebnis:
{ "interpreted" : "Homer", "literal" : "$name" }
In diesem Beispiel geben wir den Wert von name
zurück Feld mit $name
darauf zu verweisen.
Wir geben auch den Literalwert $name
zurück , ohne dass MongoDB ihn so interpretiert, dass er den name
bedeutet Feld:
Beispiel 2
Angenommen, unsere Sammlung enthält das folgende Dokument:
{ "_id" : 2, "a" : 10, "b" : 5 }
Hier ist ein weiteres Beispiel für die Verwendung von $literal
:
db.test.aggregate(
[
{ $match: { _id: { $in: [ 2 ] } } },
{
$project:
{
_id: 0,
interpreted: { $multiply: [ "$a", "$b" ] },
literal: { $literal: { $multiply: [ "$a", "$b" ] } }
}
}
]
)
Ergebnis:
{ "interpreted" : 50, "literal" : { "$multiply" : [ "$a", "$b" ] } }
In diesem Fall enthält das erste zurückgegebene Feld das Ergebnis von $multiply
Operator gegen a
und b
Felder.
Das zweite Feld gibt einfach den Literalwert aus, den wir für $literal
bereitgestellt haben Betreiber.