Ich möchte etwas mit der SQL- like
Abfrage abfragen:
SELECT * FROM users WHERE name LIKE '%m%'
Wie erreiche ich dasselbe in MongoDB? Ich kann like
in der Dokumentation keinen Operator finden .
sql
mongodb
mongodb-query
sql-like
Freilauf
quelle
quelle
5
Stimmen für das Like-Operator- Tag. Könnte ich Sie bitten , SQL-like als Synonym vorzuschlagen ?Antworten:
Das müsste sein:
o.ä:
Sie suchen nach etwas, das irgendwo "m" enthält (der SQL-
%
Operator "entspricht dem von Regexp.*
"), und nicht nach etwas, das "m" am Anfang der Zeichenfolge verankert hat.Hinweis: Mongodb verwendet reguläre Ausdrücke, die in SQL leistungsfähiger sind als "LIKE". Mit regulären Ausdrücken können Sie jedes Muster erstellen, das Sie sich vorstellen.
Weitere Informationen zu regulären Ausdrücken finden Sie unter diesem Link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
quelle
LIKE
Abfrage in SQL.javascript db.users.find({ "name": { $regex: /m/i } })
raus: paulo, patric
raus: paulo, patric
raus: pedro
quelle
select name from users;
das nur alle Benutzer auflistet?Im
du kannst tun:
quelle
%sometext%
db.users.find({'name': {'$regex': 'sometext', '$options': 'i'}})
In PHP können Sie folgenden Code verwenden:
quelle
$collection.where(field => {"$regex" => value})
Sie würden Regex dafür in Mongo verwenden.
z.B:
db.users.find({"name": /^m/})
quelle
Es gibt bereits viele Antworten. Ich gebe verschiedene Arten von Anforderungen und Lösungen für die Zeichenfolgensuche mit Regex.
Sie können mit Regex tun, die Wort enthalten, z. B. wie. Sie können auch
$options => i
für die Suche ohne Berücksichtigung der Groß- und Kleinschreibung verwendenEnthält
string
Enthält nicht
string
nur RegexGenaue Groß- und Kleinschreibung wird nicht berücksichtigt
string
Beginnen mit
string
Ende mit
string
Bewahren Sie dies als Lesezeichen und als Referenz für andere Änderungen auf, die Sie möglicherweise benötigen.
quelle
Sie haben 2 Möglichkeiten:
oder
Auf der zweiten haben Sie mehr Optionen, wie "i" in Optionen, um die Groß- und Kleinschreibung nicht zu berücksichtigen. Und für den "String" können Sie beispielsweise ". String. " (% String%) oder "string. *" (String%) und ". * String) (% string) verwenden. Sie können reguläre Ausdrücke verwenden wie du willst.
Genießen!
quelle
Wenn Sie node.js verwenden , heißt es , dass Sie Folgendes schreiben können:
Auch können, schreiben Sie diese:
quelle
collection.where(field => Regexp.new(value))
Sie haben bereits die Antworten erhalten, aber um Regex mit Groß- und Kleinschreibung zu vergleichen
Sie können die folgende Abfrage verwenden
Die
i
in der/m/i
zeigt Groß- und Kleinschreibung und.pretty()
bietet eine hübsche Ausgabequelle
var search="feacebook"
Wie kann ich unten @ The6thSens einstellendb.users.find ({ "name" : /search/i } )
? Ja, aber ?Für Mungo in Node.js.
quelle
Sie können die neue Funktion von 2.6 mongodb verwenden:
quelle
Verwenden Sie in nodejs project and use mongoose die Like-Abfrage
quelle
searchQuery.product_name = '/'+req.query.search.value+'/i';
searchQuery.product_name= {$regex: req.query.search.value, $options: 'i'};
if(req.query.search.value){ searchQuery.product_name = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_amount = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_person = {$regex: req.query.search.value, $options: 'i'}; searchQuery.department_name = {$regex: req.query.search.value, $options: 'i'}; searchQuery.sale_date = {$regex: req.query.search.value, $options: 'i'}; }
Kannst du bitte schauen, warum das nicht funktioniert?$regex: 'value'
erzeugen regulären Ausdruck für Ihre Suchwert und$options: 'i'
Mittel Groß- und Kleinschreibung . Ihr Code nicht funktioniert hat , weil Sie denselben Wert für andere Eigenschaft verwendet , und diese Handlung als und Bedingung , die nicht mit Ihrer Datenbank Sammlung erfüllen sollte.Für PHP Mongo Like.
Ich hatte mehrere Probleme mit PHP Mongo wie. Ich fand, dass die Verkettung der Regex-Parameter in einigen Situationen hilft, mit denen PHP Mongo Find Field beginnt . Ich dachte, ich würde hier posten, um zu dem populäreren Thread beizutragen
z.B
quelle
Die Verwendung von Vorlagenliteralen mit Variablen funktioniert auch:
{"firstname": {$regex : `^${req.body.firstname}.*` , $options: 'si' }}
quelle
Bei MongoDB Compass müssen Sie die strikte Modus-Syntax als solche verwenden:
(In MongoDB Compass ist es wichtig, dass Sie
"
statt verwenden'
)quelle
Mit der where-Anweisung können Sie ein beliebiges JS-Skript erstellen:
Referenz: http://docs.mongodb.org/manual/reference/operator/where/
quelle
$where
ist sehr ineffizient.In SQL, das ‚ wie ‘ Abfrage sieht wie folgt aus :
In der MongoDB-Konsole sieht es so aus:
Außerdem wird die
pretty()
Methode an allen Stellen, an denen eine formatierte JSON-Struktur erzeugt wird, besser lesbar sein.quelle
Regex sind teuer sind Prozess.
Eine andere Möglichkeit besteht darin, einen Textindex zu erstellen und ihn dann mit zu durchsuchen
$search
.Erstellen Sie einen Textindex mit Feldern, die durchsucht werden sollen:
Suchen Sie nach einer Zeichenfolge im Textindex:
quelle
In Go und dem mgo-Treiber:
Dabei ist result die struct-Instanz des gesuchten Typs
quelle
bson:RegEx{Pattern:"m", Options:"i"}
stattdessenVerwenden Sie die folgenden regulären Ausdrücke. Das 'i' zeigt die Groß- und Kleinschreibung nicht an.
quelle
Like Query wäre wie unten gezeigt
für scala ReactiveMongo api,
quelle
Es scheint Gründe zu geben, sowohl das Javascript-
/regex_pattern/
Muster als auch das Mongo-{'$regex': 'regex_pattern'}
Muster zu verwenden. Siehe: MongoBD RegEx-SyntaxbeschränkungenDies ist kein vollständiges RegEx-Tutorial, aber ich wurde inspiriert, diese Tests durchzuführen, nachdem ich oben einen mehrstimmigen, mehrdeutigen Beitrag gesehen habe .
quelle
Wenn Sie Spring-Data Mongodb verwenden, können Sie dies folgendermaßen tun:
quelle
Da Mongo Shell Regex unterstützt, ist dies durchaus möglich.
Wenn bei der Abfrage die Groß- und Kleinschreibung nicht berücksichtigt werden soll, können Sie die Option "i" verwenden, wie unten gezeigt:
quelle
Wenn Sie "Gefällt mir" in Mongo suchen möchten, sollten Sie mit $ regex gehen, indem Sie diese Abfrage verwenden
db.product.find({name:{$regex:/m/i}})
Weitere Informationen finden Sie auch in der Dokumentation. https://docs.mongodb.com/manual/reference/operator/query/regex/
quelle
Verwenden Sie die Suche nach Aggregationssubstrings (mit Index !!!):
quelle
{ "_id" : ObjectId("5aba5ad988385120a01b1ac2"), "fieldExists" : 4 }
String Deepakparmar, Dipak, Parmar
ans deepakparmar
ans deepakparmar, dipak
ans deepakparmar, parmar
quelle
Ich habe ein kostenloses Tool gefunden, um MYSQL-Abfragen in MongoDB zu übersetzen. http://www.querymongo.com/ Ich habe mit mehreren Fragen nachgesehen. Wie ich sehe, sind fast alle richtig. Demnach lautet die Antwort
quelle
MongoRegex ist veraltet.
Verwenden Sie MongoDB \ BSON \ Regex
quelle
Wenn wir nach Zeichenfolgenmustern suchen, ist es immer besser, das obige Muster zu verwenden, wenn wir uns über den Fall nicht sicher sind. Ich hoffe, das hilft!!!
quelle