Szukam operatora, który pozwala mi sprawdzić, czy wartość pola zawiera określony ciąg znaków.
Coś jak:
db.users.findOne({$contains:{"username":"son"}})
Czy to jest możliwe?
Możesz to zrobić za pomocą następującego kodu.
db.users.findOne({"username" : {$regex : ".*son.*"}});
db.users.findOne({"username" : {$regex : "son"}});
Ponieważ regex obsługuje powłokę Mongo, jest to całkowicie możliwe.
Jeśli chcemy, aby zapytanie nie rozróżniało wielkości liter, możemy użyć opcji „i”, jak pokazano poniżej:
Zobacz: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
źródło
db.users.findOne({"username" : /.*son.*/});
może to być również przesada, a wyrażenie regularne może być po prostu/son/
{ username: /son/ }
https://docs.mongodb.com/manual/reference/sql-comparison/
http://php.net/manual/en/mongo.sqltomongo.php
MySQL
MongoDB
źródło
Począwszy od wersji 2.4, możesz utworzyć indeks tekstowy na polach, aby wyszukać i użyć operatora $ text do zapytania.
Najpierw utwórz indeks:
db.users.createIndex( { "username": "text" } )
Następnie, aby wyszukać:
db.users.find( { $text: { $search: "son" } } )
Punkty odniesienia (~ 150 000 dokumentów):
Uwagi:
db.collection.createIndex( { "$**": "text" } )
.źródło
Ponieważ jest to jedno z pierwszych trafień w wyszukiwarkach i żadne z powyższych nie wydaje się działać w MongoDB 3.x, oto jedno wyszukiwanie wyrażeń regularnych, które działa:
Nie ma potrzeby tworzenia i dodatkowego indeksowania ani podobnych.
źródło
Oto, co musisz zrobić, jeśli łączysz MongoDB przez Python
możesz także użyć nazwy zmiennej zamiast „Son”, a zatem konkatenacji łańcucha.
źródło
.*${value}.*
}Najprostszy sposób na wykonanie tego zadania
Jeśli chcesz, aby w zapytaniu rozróżniana była wielkość liter
Jeśli chcesz, aby zapytanie nie rozróżniało wielkości liter
źródło
idealna odpowiedź jego indeks wykorzystania i opcja dla bez rozróżniania wielkości liter
źródło
To powinno wystarczyć
i
Jest właśnie tam, aby uniknąć ograniczeń dopasowując pojedyncze przypadki liter.Możesz sprawdzić dokumentację $ regex dotyczącą dokumentacji MongoDB. Oto link: https://docs.mongodb.com/manual/reference/operator/query/regex/
źródło
Jak zignorować tagi HTML w dopasowaniu RegExp:
Prawdopodobnie bardzo łatwo można go przekształcić w filtr agregacji MongoDB.
źródło