Ir al contenido principal

MongoDB, ¿cómo acceder a un campo array y filtrar cuando no sea vacío?

En mongo podemos hacer consultas extremadamente sencillas pero sobre todo ágiles.

Por ejemplo, pensemos que dentro de nuestra colección miembros necesitamos traer todos los documentos que contengan dentro del campo email (un array) por lo menos un correo electrónico. Tendríamos que correr el siguiente query:
> db.miembros.find({"email": {$exists: true, $not: {$size: 0}}}, {})
Ahora bien, pensémos que por alguna razón desconocida, los datos en los documentos tienen alguna inconsistencia  como por ejemplo a alguien se le ocurrió guardarlos en la siguiente notación:
email: ["","email@domain.com", "", ""]
¿Qué desastre verdad?, aún así, en el momento en que estas intentando sacar un conjunto de datos, lo que requieres es acceder al menos a las colecciones que por lo menos tiene 1 correo electrónico dentro. Entonces tendríamos que añadir lo siguiente al query anterior:
> db.miembros.find({"email": {$exists: true, $not: {$size: 0}, $ne: ""}}, {})
Si estamos trabajando con millones de datos, quizá te convenga añadir al final del la sentencia un .limit(N), donde N es un número entero positivo, 10 es un buen número.

Comentarios

Entradas populares de este blog

Cómo extraer una columna específica de un archivo CSV

Recientemente me encontré con un pequeño reto, simple pero súper útil cuando no quieres complicarte la vida. Necesitaba de una serie de archivos en formato CSV, separados por comas, extraer únicamente las primeras 3 columnas de 4, ¡sí!, pocas columnas, pero con cientos de filas que no estaba dispuesto a editar a mano, y descubrí el comando cut, lo utilicé de la siguiente manera: [jonas]$ cut -d "," -f1-3 origen.csv > destino.csv Donde -d hace referencia al delimitado en el el archivo, -f1-3 hace referencia a las columnas que vamos a extraer, de la número 1 a la 3, origen.csv hace referencia al archivo de original sobre el cuál vamos a tomar las columnas que necesitamos y finalmente destino.csv que es el archivo destino que almacenará el nuevo resultado, y listo!, podrías complicarte la vida con awk , pero si no eres tan experto, es algo que no vas a utilizar diario y no necesitas invertir tanto tiempo, pues, algo simple como cut te va bien.

I have been playing with pdb for debugging code (introductory level)

Well, this is time to talk about something I have been playing, the pdb standard module python provides. I'll talk in the context of py 3.7+ since there are differences that improve how to work with this. Well, first of all, as you should found in this field and coding experiences and challenges. You have to deal with bugs, unexpected errors, or even worst, unexpected behavior which sometimes is most difficult to trace. Here are some lights on how to use it, this is really useful if your life is coding :). Consider the following commands table. Command Description s Execute the current line and stop at the first possible occasion. n Continue the execution until the next line in the current function is reached or it returns. p Shows the values of variables in context code. ll List the whole source code for the current function or frame l In contrast to ll, this command shows a shorter snippet of code. l. If you pass the param . to this command, it will show you always 11 li

Obturación, apertura e ISO, configuraciones que debes saber sobre tu cámara fotográfica

La fotografía es una de las actividades del segundo bloque de pasiones que más disfruto, el primer bloque, son las aventuras, los deportes de aventura y extremo, viajar y ejercitarme cuando no estoy programando. Bien, siempre he procurado conseguir las mejores tomas fotográficas, y sin saber, también siempre utilicé las funciones automáticas de las cámaras que he tenido, pensando que ella haría lo mejor por mis fotos, ¡que equivocación!, digo las configuraciones automáticas están hechas para sacar lo mejor posible del contexto de la foto, pero manejar la cámara manualmente es otro boleto, no lo digo por complicado, sino que cuando te das cuenta de la importancia de manejar solo estas 3 caracteristicas (quizá las más importantes) agradeces haber aprendido este triángulo de la configuración fotográfica, con ese conocimiento y con suerte... con cualquier cámara puedes sacar muy buenas fotografías. Reconozco que la única característica que siempre procuré al comprar una cámara fue el númer