Czy można w dowolny sposób przeszukać kolumnę w kolekcji w mongodb z $ in, która zawiera tablicę elementów do wyszukiwania, a także dopasowanie Niewrażliwe na przypadek tych elementów w kolumnie?
Odpowiedz
Możesz użyć $ elemMatch do wyszukiwania wyrażeń regularnych, np. niech szukać „niebieski” kolor w tej kolekcji:
db.items.save({ name : 'a toy', colors : ['red', 'BLUE'] })
> ok
db.items.find({ 'colors' :
{ $elemMatch :
{ $regex : 'blue', $options : 'i' }
}
})
>[
{ "name" : "someitem", "_id" : { "$oid" : "4fbb7809cc93742e0d073aef" }, "colors" : [ "red", "BLUE" ] }
]
Jedna uwaga: to wyrażenie nie będzie używać indeksu. Takie rozwiązanie nie pasuje do "dużych zbiorów danych". Innym rozwiązaniem jest obsługa tej samej tablicy z małymi literami. –
Rzeczywiście. Dziękuję, że o tym wspomniałeś. –
nie jest to użyteczne, gdy musimy sprawdzić tablicę wartości –
Oto moja sprawa niewrażliwe wyszukiwania (zapytanie) z wieloma warunek (regex) z danymi z tablicy, Użyłem $in
ale nie obsługuje wyszukiwania niewrażliwego na wielkość liter.
Przykład Dane
{
name : "...Event A",
tags : ["tag1", "tag2", "tag3", "tag4]
},
{
name : "...Event B",
tags : ["tag3", "tag2"]
},
{
name : "...Event C",
tags : ["tag1", "tag4"]
},
{
name : "...Event D",
tags : ["tag2", "tag4"]
}
Moje zapytanie
db.event.find(
{ $or: //use $and or $or depends on your needs
[
{ tags : {
$elemMatch : { $regex : '^tag1$', $options : 'i' }
}
},
{ tags : {
$elemMatch : { $regex : '^tag3$', $options : 'i' }
}
}
]
})
Zastosowanie $in ze mecz jest wielkość liter ma znaczenie:
przykładdanych:
{
name : "...Event A",
fieldX : "aAa"
},
{
name : "...Event B",
fieldX : "Bab"
},
{
name : "...Event C",
fieldX : "ccC"
},
{
name : "...Event D",
fieldX : "dDd"
}
I chcemy Docu mentów były „fieldX” jest zawarta w każdej wartości macierzy (optValues):
var optValues = ['aaa', 'bbb', 'ccc', 'ddd'];
var optRegexp = [];
optValues.forEach(function(opt){
optRegexp.push( new RegExp(opt, "i"));
});
db.collection.find({ fieldX: { $in: optRegexp } });
działa na $all albo.
Mam nadzieję, że to pomoże!
p.s .: To było moje rozwiązanie do wyszukiwania według tagów w aplikacji internetowej.
, która działała dla potrzeb Ruby, a także dzięki .. użyłem 'Regexp.new (opt, Regexp :: IGNORECASE)' zamiast 'nowego RegExp (tag, "i") ' –
To działa na mnie idealnie: z kodu możemy tworzyć własne zapytanie tak:
{"first_name":{"$in":[{"$regex":"^serina$","$options":"i"},{"$regex":"^andreW$","$options":"i"}]}}
ta przekształci się idąc w Mongo po zapytaniu:
db.mycollection.find({"first_name":{"$in":[/^serina$/i, /^andreW$/i]}})
samo dla „$ nin ".
- 1. Regex podzielić camel sprawa
- 2. Sprawa Niewrażliwe wyszukiwania/zapytania
- 3. Sprawa na INNER Dołącz
- 4. Sprawa w chronionym wyłącznikiem
- 5. NSMutableArray Sortowanie - sprawa niewrażliwe
- 6. Scala klasa sprawa powiększenia wyrobów z Serializable
- 7. Jak sprawa URL niewrażliwy z Nginx
- 8. C: Sprawa przełącznik z operatorem logicznym
- 9. SQL Query - SPRAWA Nieoczekiwany Reklamowe
- 10. Nieczułe na wielkość liter porównywanie ciągów znaków
- 11. Nieczułe na kolumny kolumn w SQLAlchemy?
- 12. Nieczułe na wielkość liter zamień na
- 13. Nieczułe na ciągi literowe porównania C++
- 14. SQL Server odpytuje sprawa wrażliwość
- 15. Pandy - SQL sprawa rachunku równowartość
- 16. SPRAWA TO klauzula zawsze oceniana
- 17. Kiedy sprawa ma znaczenie syntaktyczne?
- 18. Scala - Sprawa mecz częściowy ciąg
- 19. Swift 3, switch, sprawa hasPrefix
- 20. Mysql przypadek zapytań z zakresu, a sprawa z waluty
- 21. Przebaczanie/Wyszukiwanie rozmyte z LINQ
- 22. sprawa analizowaniem YAML przednia w Javie
- 23. Czy nazwisko kod stanu HTTP sprawa
- 24. Sprawa, kiedy, ale z warunkiem AND wewnątrz i wtedy przed
- 25. Hrabia wielokrotnych wystąpień Sprawa w SQL
- 26. In-memory LINQ performance
- 27. SQLAlchemy z PostgresSQL i wyszukiwanie pełnotekstowe
- 28. Elasticsearch Wyszukiwanie z małymi literami
- 29. Wyszukiwanie w ListView z EditText
- 30. Wyszukiwanie tekstu mongo z mangustą
Oprócz operatora $ in, jest to duplikat http://stackoverflow.com/questions/1863399/mongodb-is-it-possible-to-make-a-case-insensitive-query –
Dobrze. moje pytanie było zasadniczo związane z dopasowaniem wielkości liter do operatora $ in. –