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

Follow up Java.

Java: So far, so good! A poco más de 20 días de una nueva aventura profesional, la perspectiva de aprovechamiento, tiempos de aprendizaje y transferencia del conocimiento ha sido interesante, en realidad muy positiva. Después de casi 3 semanas de haber comenzado,  el aprendizaje de los conceptos base (knowledge base, término ampliamente utilizado en el área),  la familiarización con la estructura del código, la codificación en sí, comienzan a dar frutos y a tomar forma. ¿Qué hemos aprendido hasta el momento? Estructura del lenguaje Tipos de variables, variables de miembros y cómo declararlas Uso de operadores y concepto de operandos Estructura básica de las clases, objetos, interfaces, packages Herencia de objetos, instancias, atributos estáticos, parámetros, variables, métodos Entre otros temas, esos son los avances. En retrospectiva, el bagaje de conocimiento  previo  (en lo personal)    ha sido de gran impacto en términos positivos y la curva de aprendizaje mu

How to delete one or more documents from your MongoDB repository

MongoDB seems to be complex at first sign, but in fact is not, you could perform a complete CRUD easily if you expend some time on the documentation. For example, lets say you need to delete some documents (rows, if you are thinking on a traditional RDBMS). First you want to find all these documents to be removed. > db.your_collection.find({ "cvectry": "MX", "layer_id": 20 }, {}) { "_id" : ObjectId("5e8123e8892355c921e6b436"), "layer_id" : 20 } > After finding all these documents to be removed, then you want to perform the following delete method as follow: > db.your_collection.remove({ "cvectry": "MX", "layer_id": 20 }, { justOne: true }) WriteResult({ "nRemoved" : 1 }) > In this case, after finding all these documents that match with "cvectry": "MX", "layer_id": 20. I got the result on the first command I ran, so I just wanted to delete just on