Buscar en moleculax

Este blog es un ensayo digital donde el pensamiento estructurado se encuentra con la introspección profunda. Explora la arquitectura del conocimiento: desde lo técnico hasta los fundamentos éticos. Aquí, cada algoritmo tiene propósito, cada línea de código refleja intención, y cada reflexión filosófica busca optimizar no solo sistemas, sino también decisiones humanas. Este blog no solo enseña a pensar, enseña a discernir, a construir con sentido. Porque el verdadero desarrollo nace de la conciencia, y eso exige precisión, virtud y coraje.

Tenemos que aprender a contemplar las potenciales consecuencias de nuestros planes, para impedir que nos sorprendan. De esta manera, tendremos más control sobre las situaciones difíciles ya que el verdadero progreso no se mide por la velocidad con la que avanzamos, sino por la dirección que elegimos. En un mundo cada vez más interconectado, el desarrollo de la humanidad exige más que tecnología y conocimiento: requiere conciencia, empatía y propósito.

Debemos cultivar una inteligencia que no solo resuelva problemas, sino que los prevenga con sabiduría. Una ciencia que no solo descubra, sino que se pregunte por qué y para quién. Una economía que no solo crezca, sino que reparta con justicia. Y una cultura que no solo celebre lo diverso, sino que lo abrace como fuerza vital.

Cada decisión que tomamos, cada palabra que decimos, cada idea que compartimos, puede ser una semilla de transformación. El futuro no está escrito: lo estamos escribiendo juntos, ahora mismo.

Que el desarrollo humano sea integral, sostenible y profundamente humano. Porque solo cuando elevamos a todos, nos elevamos como especie.

Sabiduría Justicia Templanza Coraje
Búsquedas en MongoDB

Comando de búsqueda

db.amigos.find({[CONSULTA_1]},{[PROYECIÓN_2]})
Este comando puede recibir dos parámetros: una consulta y una proyección. Estos comandos son opcionales.

1. Consulta de datos

Personas mayores de 25 años
db.amigos.find({"Edad": {$gt: 25}})

2. Mostrar proyección

Mostrar nombre y apellidos de las Marisas encontradas
db.amigos.find({Nombre: "Marisa" },{Nombre:1, Apellidos:2})

Mostar todos los datos de una colección

Formato básico

db.amigos.find()
EJEMPLO DE BASE DE DATOS UTILIZADA PARA LAS BÚSQUEDAS:
{ "_id" : ObjectId("5a6f05fbb56b58b447e66809"), "Nombre" : "Luís", "Apellidos" : "Martinez", "Edad" : 18, "Aficiones" : [ "fútbol", "senderismo", "tenis" ], "Amigos" : [ { "Nombre" : "Monica", "Edad" : 20 }, { "Nombre" : "Andrés", "Edad" : 24 } ] } 
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa", "Apellidos" : "García", "Edad" : 18, "Aficiones" : [ "senderismo", "tenis", "pintura" ], "Amigos" : [ { "Nombre" : "Monica", "Edad" : 20 } ] } 
{ "_id" : ObjectId("5a6f08e5b56b58b447e6680b"), "Nombre" : "Joaquin", "Apellidos" : "Rodriguez", "Edad" : 18, "Aficiones" : [ "fútbol", "natación" ], "Amigos" : [ { "Nombre" : "Andrés", "Edad" : 24 } ] } 
{ "_id" : ObjectId("5a6f08e5b56b58b447e6680c"), "Nombre" : "Luís", "Apellidos" : "Martinez", "Edad" : 28, "Aficiones" : [ "natación", "culturismo" ], "Amigos" : [ { "Nombre" : "Juan", "Edad" : 40 }, { "Nombre" : "Antonio", "Edad" : 52 } ] }

Formato más legible

db.amigos.find().pretty()
{
 "_id" : ObjectId("5a6f05fbb56b58b447e66809"),
 "Nombre" : "Luís",
 "Apellidos" : "Martinez",
 "Edad" : 18,
 "Aficiones" : [
  "fútbol",
  "senderismo",
  "tenis"
 ],
 "Amigos" : [
  {
   "Nombre" : "Monica",
   "Edad" : 20
  },
  {
   "Nombre" : "Andrés",
   "Edad" : 24
  }
 ]
}
...

Operaciones de comparación

Mayor que

Mostrar nombre y apellidos de los mayores de 25 años
db.amigos.find({"Edad": {$gt: 25}},{Nombre:1, Apellidos:2})
{ "_id" : ObjectId("5a6f08e5b56b58b447e6680c"), "Nombre" : "Luís", "Apellidos" : "Martinez" }

Menor que

Mostrar nombre y apellidos de los menores de 25 años
db.amigos.find({"Edad": {$lt: 25}},{Nombre:1, Apellidos:2})
{ "_id" : ObjectId("5a6f05fbb56b58b447e66809"), "Nombre" : "Luís", "Apellidos" : "Martinez" }
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa", "Apellidos" : "García" }
{ "_id" : ObjectId("5a6f08e5b56b58b447e6680b"), "Nombre" : "Joaquin", "Apellidos" : "Rodriguez" }

Operadores de existencia y tipo

Como MongoDB es una base de datos sin esquema, cada documento puede tener distintos campos e incluso estos campos pueden ser de distintos tipos.

Existencia

Por esto es muy habitual usar en las consultas una operación que nos indique la existencia de un campo.
db.amigos.insert({ Nombre: "Natalia", Edad: 18, Aficiones: ["pintura"] })
db.amigos.find({Apellidos:{$exists:false}},{Nombre:1})
{ "_id" : ObjectId("5a6f49aab56b58b447e6680f"), "Nombre" : "Natalia" }

Tipo

Si queremos hacer una consulta por tipo de dato usaríamos:
db.amigos.find({Apellidos:{$type:2}},{Nombre:1})
{ "_id" : ObjectId("5a6f05fbb56b58b447e66809"), "Nombre" : "Luís" }
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa" }
{ "_id" : ObjectId("5a6f08e5b56b58b447e6680b"), "Nombre" : "Joaquin" }
{ "_id" : ObjectId("5a6f08e5b56b58b447e6680c"), "Nombre" : "Luís" }

Operaciones lógicas:

Disyunción Y ($and)

db.amigos.find(
  { 
    $and: 
      [ 
        {Edad: {$gt:17}}, 
        {Nombre: "Marisa" } 
      ] 
  }
)
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa", "Apellidos" : "García", "Edad" : 18, "Aficiones" : [ "senderismo", "tenis", "pintura" ], "Amigos" : [ { "Nombre" : "Monica", "Edad" : 20 } ] }

Conjunción O ($or)

db.amigos.find(
  { 
    $or: 
      [ 
        {Edad: {$gt: 20}}, 
        {Nombre: "Marisa" } 
      ] 
  }
)

{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa", "Apellidos" : "García", "Edad" : 18, "Aficiones" : [ "senderismo", "tenis", "pintura" ], "Amigos" : [ { "Nombre" : "Monica", "Edad" : 20 } ] }
{ "_id" : ObjectId("5a6f08e5b56b58b447e6680c"), "Nombre" : "Luís", "Apellidos" : "Martinez", "Edad" : 28, "Aficiones" : [ "natación", "culturismo" ], "Amigos" : [ { "Nombre" : "Juan", "Edad" : 40 }, { "Nombre" : "Antonio", "Edad" : 52 } ] }

Negación NO ($not)

db.amigos.find( {Edad:{$not: {$gt:23}}})

Negación NO ($nor)

Acepta dos o mas valores
db.amigos.find({$nor:[{Edad:{$gt:23}}, {Nombre: "Marisa"}]}) 

Operaciones sobre sub-documentos

db.inventario.insert([
   { "_id" : 1, "Nombre" : "peras", descripcion: "producto 1", "stock" : 220 },
   { "_id" : 2, "Nombre" : "manzanas", descripcion: "producto 2", "stock" : 91 },
   { "_id" : 3, "Nombre" : "naranjas", descripcion: "producto 3", "stock" : 72 },
   { "_id" : 4, "Nombre" : "platinos", descripcion: "producto 4", "stock" : 32 },
   { "_id" : 5, "Nombre": null, descripcion: "Incompleta" },
   { "_id" : 6 }
])
db.compras.insert([
   { "_id" : 1, "Item" : "peras", "precio" : 12, "cantidad" : 2 },
   { "_id" : 2, "Item" : "manzanas", "precio" : 20, "cantidad" : 1 },
   { "_id" : 3  }
])
db.compras.aggregate([ 
  { $lookup: 
    { 
      from: "inventario", 
      localField: "Item", 
      foreignField: "Nombre", 
      as: "inventario_docs" 
     } 
   } 
])

Expresiones regulares: $regex

db.amigos.find({"Nombre": {$regex:".*a$"}},{Nombre:1})
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa" }
{ "_id" : ObjectId("5a6f49aab56b58b447e6680f"), "Nombre" : "Natalia" }

Operaciones sobre arrays

Contar

b.amigos.find().count()
4

Ordenar descendente

db.amigos.find({},{Nombre:1}).sort({Nombre:1})
{ "_id" : ObjectId("5a6f090db56b58b447e6680d"), "Nombre" : "Joaquin" }
{ "_id" : ObjectId("5a6f05fbb56b58b447e66809"), "Nombre" : "Luís" }
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa" }
{ "_id" : ObjectId("5a6f49aab56b58b447e6680f"), "Nombre" : "Natalia" }

Ordenar ascendente

db.amigos.find({},{Nombre:1}).sort({Nombre:-1})
{ "_id" : ObjectId("5a6f49aab56b58b447e6680f"), "Nombre" : "Natalia" }
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa" }
{ "_id" : ObjectId("5a6f05fbb56b58b447e66809"), "Nombre" : "Luís" }
{ "_id" : ObjectId("5a6f090db56b58b447e6680d"), "Nombre" : "Joaquin" }

Limitar la búsqueda

db.amigos.find({},{Nombre:1}).sort({Nombre:1}).limit(2)
{ "_id" : ObjectId("5a6f090db56b58b447e6680d"), "Nombre" : "Joaquin" }
{ "_id" : ObjectId("5a6f05fbb56b58b447e66809"), "Nombre" : "Luís" }

Buscar a partir del X

db.amigos.find({},{Nombre:1}).sort({Nombre:1}).skip(2)
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa" }
{ "_id" : ObjectId("5a6f49aab56b58b447e6680f"), "Nombre" : "Natalia" }

Crear un array con los elementos de salida

db.compras.find({},{Nombre:1}).toArray()
{ "_id" : ObjectId("5a6f06fab56b58b447e6680a"), "Nombre" : "Marisa" }
{ "_id" : ObjectId("5a6f49aab56b58b447e6680f"), "Nombre" : "Natalia" }

Copiar colecciones en MongoDB

db.amigos.aggregate([{$out: "copia_amigos"}])
show collections
amigos
compras
copia_amigos
inventario
system.indexes

.

agenda 2023 (1) Algo que leer (265) Android (2) Angular (2) Apache (6) API (1) Arte y Cultura (11) Artes Marciales (10) Banner (1) Base de datos (33) Batalla Cultural (4) Big Data (12) Budismo (4) cabala judia (2) Calculo Asistido por computadoras (2) Canaima (6) Caos (1) Ceo (1) ciencias (1) Cine (1) Cobol (12) Cobra Kai (1) Codigo Linux Documental (2) Computación (3) Computación forense (14) Configurando Samba (1) Conocimiento (1) Consola (8) contenedores (5) Criptomonedas (3) Cultura (1) Cursos (15) Darkweeb (3) Data Mining (1) Debian (12) DeepWeb (7) demografia (8) Deporte y Recreación (9) Deportes (10) desclasificados (7) Desktop (1) developers (1) Docker (6) Document (1) Ecología (6) Editor (3) Editores (4) Educacion y TIC (31) Electronica (2) Emprendimiento (7) Espiritualidad (2) estoicismo (4) Eventos (2) Excel (1) Express (1) fedora (1) Filosofía (25) Flisol 2008 (3) Flisol 2010 (1) Flisol 2015 (1) framework (1) Funny (1) Geografía (1) Gerencia y Liderazgo (72) Gestor de Volúmenes Lógicos (1) Git (7) GitHub (8) Globalizacion (5) gnu (28) Go (1) gobiernos (2) golang (2) Google por dentro (1) GraphQL (1) gRPC (1) Hackers - Documental (8) Hacking (31) Historia (3) howto (189) html (1) IA (19) IntelliJIDEA (1) Internet (6) Introducción a los patrones (2) J SON (1) java (51) java eclipse (2) javaScript (8) JDK (1) jiujitsu (4) Json (1) Junit (1) kali (37) kernel (2) Kotlin (1) Laravel (2) Latin (1) LIbreOffice (1) Libros (4) Linux (44) Linux VirtualBox (1) Literatura (1) Manuales (42) mariaDB (1) Markdown (4) Marketing (1) Matando ladilla (9) Matematricas (1) Math (1) maven (1) metodos https (1) Modelos (1) MongoDB (17) Multimedia (1) Musica (1) mvc (2) Mysql (20) MySQL Workbench (1) Nagios (2) Naturismo (1) node (4) Node.js (5) NodeJS (8) NoSQL (1) Oracle (8) Oracle sql (8) Php (2) PL/SQL (1) Plsql (1) PNL (1) Poblacion (2) Podman (1) Poesia (1) Politica (4) Política (1) Postgresql (8) PowerShell (1) programacion (79) Psicologia (11) Python (5) Recomiendo (1) Redes (31) Religion (2) REST (2) Rock (1) Rock/Metal Mp3 (2) RUP (1) Salud (5) sc:snap:android-studio (1) sc:snap:datagrip (1) sc:snap:gitkraken linux (1) Seguridad (17) Seguridad con Gnu Privacy (2) Seo (1) simulaEntrevistas (10) simularExamen (10) Sistemas Operativos (69) SOAP (1) Sociedad (5) Software Libre (169) Soporte Tecnico (12) Sphinx (1) spring (1) spring boot (10) SQL (3) SQL en postgreSQL (38) Taekwondo (11) Tecnologia (5) Tecnología (27) Templarios (5) Tendencias (1) Thymeleaf (1) Tomcat (2) Tor (9) Trialectica (3) TYPEACRIPT (1) Ubuntu (5) unix (2) Vida activa (1) Videos (11) Videos Educativos (10) Vim (1) Viral (3) Visual Studio (1) wallpaper (2) web (1) Wifi (2) Windows (3) WWW (2) Xrandr (1) Zero Trust (2)

Sabiduria Justicia Templanza Coraje.

Hay que contemplar las potenciales consecuencias de nuestros planes, para impedir que nos sorprendan. De esta manera, tendremos más control sobre las situaciones difíciles.


Powered by