742 Stimmen

Prüfen, ob ein Feld eine Zeichenkette enthält

Ich suche einen Operator, mit dem ich prüfen kann, ob der Wert eines Feldes eine bestimmte Zeichenfolge enthält.

Etwa so:

db.users.findOne({$contains:{"username":"son"}})

Ist das möglich?

22voto

Patthebug Punkte 4537

So müssen Sie vorgehen, wenn Sie MongoDB über Python verbinden wollen

db.users.find({"username": {'$regex' : '.*' + 'Son' + '.*'}})

können Sie auch einen Variablennamen anstelle von 'Son' und damit die String-Verkettung verwenden.

21voto

Anurag Misra Punkte 1362

Der einfachste Weg, diese Aufgabe zu bewältigen

Wenn die Abfrage wie folgt lauten soll Groß- und Kleinschreibung

db.getCollection("users").find({'username':/Son/})

Wenn die Abfrage wie folgt lauten soll Groß- und Kleinschreibung wird nicht berücksichtigt

db.getCollection("users").find({'username':/Son/i})

12voto

Hisham Punkte 1105

Ideale Antwort sein Verwendungsindex i Option für Groß- und Kleinschreibung wird nicht berücksichtigt

db.users.findOne({"username" : new RegExp(search_value, 'i') });

12voto

tate Punkte 109

Dies sollte die Arbeit erledigen

db.users.find({ username: { $in: [ /son/i ] } });

En i ist nur dazu da, Einschränkungen bei der Übereinstimmung einzelner Buchstaben zu verhindern.

Sie können die $regex Dokumentation zur MongoDB-Dokumentation. Hier ist ein Link: https://docs.mongodb.com/manual/reference/operator/query/regex/

11voto

robocon321 Punkte 303

Ich verwende diesen Code und es funktioniert für die Suche Teilstring

db.users.find({key: { $regex: new RegExp(value, 'i')}})

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X