Wie kann ich einen regex-variable in eine Abfrage für MongoDB
Möchte ich die Abfrage MongoDB für die Dokumente basierend auf einem regex Ausdruck, dass ich contruct. Für e.g
Ich konstruierte eine einfache regex wie folgt aus, dass ist eine Kombination aus zufälligen Buchstaben und eine Zufallszahl für die in Nodejs
var randnum = Math.floor((Math.random() * 10) + 1);
var alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','X','Y','Z'];
var randletter = alpha[Math.floor(Math.random() * alpha.length)];
var val = randletter + randnum + '.*;
Ich habe versucht, verschiedene Kombinationen für die regex-variable wie
var stream = collection.find({"FirstName": /val/).stream();
&&
var stream = collection.find({"FirstName": /$val/).stream();
&&
var stream = collection.find({"FirstName": {$in : [{$regex:val}]}}).stream()
&&
var stream = collection.find({"FirstName": {$in : [{$regex:$val}]}}).stream()
Keine o es scheint zu funktionieren. Aber wenn ich Schreibe, die eigentliche regex bekomme ich die Datensätze für z.B.
var stream = collection.find({"FirstName": /J.*/).stream();
Jede Hilfe wird geschätzt.
Dank
Ganesh
Wizard, Vielen Dank. Dies führte jedoch nicht zu funktionieren scheint.var stream = collection.finden({"Vorname": {$regex:val}}).stream(); stream.on("data", function(item) Ergebnisse.push(Element);
Fehler, oder einfach nicht das erwartete Ergebnis? Beispiel für ein Dokument in der Datenbank gespeichert sind, können hilfreich sein.
Fehler, oder einfach nicht das erwartete Ergebnis? Beispiel für ein Dokument in der Datenbank gespeichert sind, können hilfreich sein.
InformationsquelleAutor Tinniam V. Ganesh | 2014-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie zum erstellen eines regulären Ausdrucks aus der Zeichenkette mit der
RegExp
Konstruktor als/.../
syntax ist nur für die Verwendung mit Literale.Dies sollte als "Antwort" gekennzeichnet.
InformationsquelleAutor JohnnyHK
Verwenden Sie den folgenden code, um die Verwendung dynamischer Wert in regex mit oder Operationen
InformationsquelleAutor Murtaza Manasawala
Wenn Sie möchten, verwenden Sie die variable val als parameter der query-Teil können Sie verwenden $regex, zum Beispiel:
Ist es nicht erlaubt zu setzen $regex in $in Betreiber entsprechend der Bedienungsanleitung.
Wenn Sie wollen, um den regulären Ausdruck Objekt in $in Betreiber, Sie müssen JavaScript regular expression-Objekt, zum Beispiel:
Durch die Art und Weise, val in
/val/
ist Konstante Zeichenkette, nicht die Variablen wie oben definiert.Was ist mit dem Wert von Vorname in der Datenbank? Oder vielleicht auch nur keine Elemente können erfüllen Ihre Abfrage braucht?
Assistenten - Firstname ist einfach eine Zeichenkette aus Buchstaben und zahlen. Ich versuchte es ein paar mal, ist es immer wieder eine leere Menge. Die andere version var stream = collection.finden({"Vorname": new RegExp(val)}).stream(); gearbeitet. Trotzdem danke. Grüße Ganesh
Danke für die Antwort. Ich glaube, ich verpasste einige Informationen über die Umstände, die nicht-Unterstützung $regex.
InformationsquelleAutor Wizard
Ich hatte dasselbe problem mit meinem Titel, und nach viel suchen fand ich diese Antwort Hier,
Den Abfragen oben nicht etwas zurückzugeben. Die Lösung für dieses kleine problem ist ganz einfach:
Andere flags oder-Eigenschaften können Hinzugefügt werden, auf Basis Referenz hier
InformationsquelleAutor Hamza Khan