Ich suche gerne einen Benutzer in mongoDb, indem ich nach einem Benutzer namens value suche. Das Problem mit:
username: 'peter'
ist, dass ich es nicht finde, wenn der Benutzername "Peter" oder "PeTER" ist .. oder so ähnlich.
Also möchte ich SQL mögen
SELECT * FROM users WHERE username LIKE 'peter'
Hoffe ihr bekommt was ich verlange?
Kurz: 'Feld LIKE Wert' in mongoose.js / mongodb
Peter
oder auchPeTER
nicht, da dieLIKE
Groß- und Kleinschreibung nicht berücksichtigt wird.Antworten:
Für diejenigen, die hier nach einer Lösung suchen, ist es:
quelle
".*"
als Benutzernamen eingegeben .Ich hatte kürzlich Probleme damit, ich benutze diesen Code und arbeite gut für mich.
Verwenden Sie direkt
/Peter/i
arbeiten, aber ich benutze'/'+data+'/i'
und arbeite nicht für mich.quelle
quelle
quelle
new RegExp(var, "i")
quelle
Sie sollten dafür einen regulären Ausdruck verwenden.
Seien Sie jedoch vorsichtig, dass diese Abfrage keinen Index verwendet.
quelle
Mungo doc zu finden. Mongodb Doc für Regex.
Beachten Sie das erste Argument , das wir weitergeben
mongoose.findOne
Funktion:{ "name" : { $regex: /Ghost/, $options: 'i' } }
,"name"
ist das Feld des Dokuments , das Sie suchen,"Ghost"
ist der reguläre Ausdruck,"i"
ist für Groß- und Kleinschreibung übereinstimmen. Hoffe das wird dir helfen.quelle
Die folgende Abfrage findet die Dokumente mit der erforderlichen Zeichenfolge ohne Berücksichtigung der Groß- und Kleinschreibung und auch mit globalem Vorkommen
quelle
Das benutze ich.
quelle
Hier mein Code mit expressJS:
quelle
Wenn ich alle Datensätze unter bestimmten Bedingungen abfragen möchte , Ich kann Folgendes verwenden:
quelle
$regex
wenn Sie gerade verwendet haben könnten{ $exists: true }
.Ergänzt nur die Antwort von @PeterBechP.
Vergessen Sie nicht, die Sonderzeichen zu gestalten. https://stackoverflow.com/a/6969486
quelle
Dies ist meine Lösung, um jeden Wert in einem req.body in einen Mungo- LIKE- Parameter umzuwandeln:
quelle