MongoDB Regex-Suche auf Ganzzahligen Wert
Möchte ich regex-Suche auf einen integer-Wert in MongoDB. Ist das möglich?
Baue ich eine CRUD-Art Schnittstelle, die es erlaubt * für die Platzhalter auf den verschiedenen Feldern. Ich versuche, halten Sie die Benutzeroberfläche konsistent für ein paar Felder, ganze zahlen sind.
Betrachten:
> db.seDemo.insert({ "example" : 1234 });
> db.seDemo.find({ "example" : 1234 });
{ "_id" : ObjectId("4bfc2bfea2004adae015220a"), "example" : 1234 }
> db.seDemo.find({ "example" : /^123.*/ });
>
Wie Sie sehen können, ich ein Objekt einfügen, und ich bin in der Lage, es zu finden, indem Sie den Wert. Wenn ich versuche eine einfache regex, ich kann nicht wirklich das Objekt finden.
Dank!
InformationsquelleAutor Gary Richardson | 2010-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, zu tun, die einem Muster entsprechen, auf zahlen, die Art und Weise, es zu tun in mongo ist die $where-Ausdruck und übergeben Sie in ein Muster passen.
Einfach nur neugierig, hier würden nicht die $regex operator effizienter sein als die $, wo?
Dachte, dass etwas ähnliches würde gelten für den Ruby-Treiber, wie @gary darauf hingewiesen, aber Nein. Dieser funktioniert wie ein Charme db.test.finden( "$where" => "/^123.*/.test(dies.Beispiel)" )
Das wäre schrecklich ineffizient ist, wäre es nicht?
es gibt Erwähnung von diesem in jira.mongodb.org/browse/SERVER-1174: "Wir haben darüber nachgedacht, aber denke nicht, sodass regex gegen nicht-Zeichenfolgen-Felder ist eine tolle Idee. Es wird sehr langsam sein, und irgendwie irreführend."
InformationsquelleAutor dalton
Ich bin kein großer fan der Verwendung der
$wo
Abfrage-Betreiber wegen der Art, wie es die Auswertung der Abfrage-Ausdrucks und die Sicherheit zu riskieren, wenn die Abfrage verwendet den Benutzer Eingabedaten.That being said, die beste Weg, dies zu tun ist, um
$project
Ihrem Dokument und fügen Sie ein weiteres berechnetes Feld ist der string-Wert Ihrer Zahl.Den
$toLower
und seine Geschwister$toUpper
Betreiber bzw. konvertiert eine Zeichenfolge in Kleinbuchstaben und Großbuchstaben, sondern haben eine unbekannte Funktion, die Sie verwenden können, zu konvertieren integer zu string.Den
$match
- operator gibt alle jene, Dokument, passen Sie Ihre Muster mit den$regex
Betreiber.welche ergibt:
Nun, wenn das, was Sie wollen, ist abrufen alle Dokumente enthalten, die einen bestimmten substring, der einfachere und bessere Weg, dies zu tun ist in der kommenden release von MongoDB (als dies geschrieben wurde) mit der
$schwärzen
Betreiber die es erlaubt, eine$dir
itional-Logik-Verarbeitung.$indexOfCP
.produziert:
InformationsquelleAutor styvane