Ich habe diese Daten in Mongodb:
{
"name": "Amey",
"country": "India",
"region": "Dhule,Maharashtra"
}
und ich möchte die Daten abrufen, während ich einen Feldnamen als Variable in der Abfrage übergebe.
Folgendes funktioniert nicht:
var name = req.params.name;
var value = req.params.value;
collection.findOne({name: value}, function(err, item) {
res.send(item);
});
Wie kann ich mongodb abfragen, wobei sowohl der Feldname als auch sein Wert dynamisch bleiben?
Antworten:
Sie müssen den Schlüssel des Abfrageobjekts dynamisch festlegen:
Wenn Sie dies tun
{name: value}
, ist der Schlüssel die Zeichenfolge'name'
und nicht der Wert der Variablenname
.quelle
value
durch Ihre Anfrage wie{ $gt: 50 }
Setzen Sie einfach die Variable in []
quelle
Ich möchte klarstellen, dass, wenn Sie versuchen, eine Abfrage nur für ein verschachteltes Feld (nicht dessen Wert) durchzuführen, Sie beispielsweise das Feld "Name" aus diesem Dokument abfragen möchten:
Dies wird funktionieren (wie in meinem Fall - mit Update):
Das
[query]
einfache Einschließen in Klammern sagt Mongodb, dass es nicht wörtlich ist, sondern ein Pfad.quelle
Verwenden Sie diese Option, wenn das Objekt verschachtelt ist.
Direktes Objekt:-
Ein Objekt ist verschachtelt: -
quelle
'name.${surname}'
aber für Variablen verwenden wir nicht ', danke