¿Hay alguna manera de buscar en una columna de una colección en mongodb con $ en la que incluya una matriz de elementos para buscar y también coincidencias caseInsensitive de esos elementos en la columna?
Respuesta
Puede usar $ elemMatch con la búsqueda de expresiones regulares, p. Ej. vamos a la búsqueda para "azul" color en la colección siguiente:
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" ] }
]
Una nota: esta expresión regular no usará el índice. Entonces, esa solución no se ajusta a 'big data'. Otra solución es admitir la misma matriz en minúsculas. –
De hecho. Gracias por mencionar eso. –
esto no es útil cuando tenemos que verificar una matriz de valor –
Aquí es mi sensible a mayúsculas búsqueda (query) con la condición múltiple (expresiones regulares) a partir de datos de la matriz, que he usado $in
pero no es compatible con la búsqueda insensible a mayúsculas y minúsculas.
Ejemplo datos
{
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"]
}
Mi consulta
db.event.find(
{ $or: //use $and or $or depends on your needs
[
{ tags : {
$elemMatch : { $regex : '^tag1$', $options : 'i' }
}
},
{ tags : {
$elemMatch : { $regex : '^tag3$', $options : 'i' }
}
}
]
})
Uso $in con el caso de ser insensibles partido:
Datos ejemplo:
{
name : "...Event A",
fieldX : "aAa"
},
{
name : "...Event B",
fieldX : "Bab"
},
{
name : "...Event C",
fieldX : "ccC"
},
{
name : "...Event D",
fieldX : "dDd"
}
y queremos docu mentos eran "CampoX" está contenida en cualquier valor de la matriz (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 } });
Esto funciona para $all tampoco.
Espero que esto ayude!
p.s .: Esta fue mi solución para buscar por etiquetas en una aplicación web.
también funcionó para las necesidades de Ruby. Solo usé 'Regexp.new (opt, Regexp :: IGNORECASE)' en lugar de 'nueva RegExp (tag, "yo") ' –
Esto funciona para mí perfectamente: De código podemos crear consultas personalizadas así:
{"first_name":{"$in":[{"$regex":"^serina$","$options":"i"},{"$regex":"^andreW$","$options":"i"}]}}
Esto transformará al siguiente en mongo después de consulta:
db.mycollection.find({"first_name":{"$in":[/^serina$/i, /^andreW$/i]}})
Lo mismo para "$ Nin ".
- 1. SOLR Búsqueda insensible a mayúsculas/minúsculas
- 2. Búsqueda de lista insensible a mayúsculas/minúsculas
- 3. JavaScript: búsqueda insensible a mayúsculas/minúsculas
- 4. Búsqueda insensible a mayúsculas/minúsculas usando Hibernate
- 5. Búsqueda insensible a mayúsculas y minúsculas en grails
- 6. Búsqueda insensible a mayúsculas y minúsculas en Sybase
- 7. Búsqueda insensible a mayúsculas y minúsculas en el campo varbinary?
- 8. Búsqueda insensible a mayúsculas y minúsculas de palabras en mongoid
- 9. ¿Búsqueda del diccionario insensible a mayúsculas y minúsculas?
- 10. búsqueda insensible a mayúsculas y minúsculas de MySQL?
- 11. Insensible a mayúsculas/minúsculas #define
- 12. Búsqueda insensible a mayúsculas o minúsculas en Mongo
- 13. Collation insensible a mayúsculas y minúsculas en Oracle con LIKE
- 14. Una lista insensible a mayúsculas y minúsculas
- 15. Cadena insensible a mayúsculas y minúsculas :: find
- 16. LINQ contiene insensible a mayúsculas y minúsculas
- 17. Insensible a mayúsculas y minúsculas Contiene con Dynamic Linq
- 18. Lucene, búsqueda sensible a mayúsculas y minúsculas
- 19. Búsqueda de clave insensible a mayúsculas/minúsculas de MongoDB
- 20. ordenación de lista insensible a mayúsculas y minúsculas, sin minúsculas?
- 21. KVC insensible a mayúsculas/minúsculas en Cocoa?
- 22. Regex insensible a mayúsculas y minúsculas en javascript
- 23. Insensible a mayúsculas/minúsculas reemplace todo
- 24. Globo insensible a mayúsculas y minúsculas en zsh/bash
- 25. Coincidencia insensible a mayúsculas y minúsculas en xpath?
- 26. Diccionario insensible a mayúsculas/minúsculas no funciona
- 27. Deserialización de propiedades insensible a las mayúsculas y minúsculas Json.NET
- 28. Sustitución de cadenas insensible a mayúsculas y minúsculas en JavaScript?
- 29. Arreglo insensible a mayúsculas y minúsculas en Lua
- 30. Insensible a mayúsculas/minúsculas (ilike) en Datamapper con Postgresql
Aparte del operador $ in, este es un duplicado de http://stackoverflow.com/questions/1863399/mongodb-is-it-possible-to-make-a-case-insensitive-query –
Ya a la derecha. mi pregunta estaba relacionada básicamente con la coincidencia caseinsensitive con el operador $ in. –