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?
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?
Da die Mongo-Shell Regex unterstützt, ist das durchaus möglich.
db.users.findOne({"username" : /.*son.*/});
Wenn die Groß- und Kleinschreibung bei der Abfrage nicht beachtet werden soll, kann die Option "i" verwendet werden, wie unten gezeigt:
db.users.findOne({"username" : /.*son.*/i});
Voir : http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
https://docs.mongodb.com/manual/reference/sql-comparison/
http://php.net/manual/en/mongo.sqltomongo.php
MySQL
SELECT * FROM users WHERE username LIKE "%Son%"
MongoDB
db.users.find({username:/Son/})
Ab der Version 2.4 können Sie eine Textindex auf das/die zu durchsuchende(n) Feld(er) und verwenden Sie die $Text Operator für die Abfrage.
Erstellen Sie zunächst den Index:
db.users.createIndex( { "username": "text" } )
Dann, um zu suchen:
db.users.find( { $text: { $search: "son" } } )
Benchmarks (~150K Dokumente):
Anmerkungen:
db.collection.createIndex( { "$**": "text" } )
.Da dies einer der ersten Treffer in den Suchmaschinen ist und keine der oben genannten Methoden für MongoDB 3.x zu funktionieren scheint, hier eine Regex-Suche, die funktioniert:
db.users.find( { 'name' : { '$regex' : yourvalue, '$options' : 'i' } } )
Es ist nicht nötig, einen zusätzlichen Index oder ähnliches zu erstellen.
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.