馃攳 B煤squeda avanzada (Search)

B煤squeda avanzada en MongoDB

馃攳 B煤squeda avanzada (Search)

MongoDB ofrece herramientas poderosas para realizar b煤squedas m谩s all谩 de los filtros b谩sicos. Esto incluye b煤squedas de texto, rangos, patrones y combinaciones complejas de condiciones.


馃敼 1️⃣ B煤squeda de texto con 铆ndices de texto

Para realizar b煤squedas de palabras clave dentro de campos de texto, se puede crear un 铆ndice de texto:

// Crear 铆ndice de texto
db.productos.createIndex({ nombre: "text", descripcion: "text" });

// Buscar documentos que contengan la palabra "teclado"
db.productos.find({ $text: { $search: "teclado" } });

Los 铆ndices de texto permiten buscar en m煤ltiples campos y aplicar relevancia mediante puntuaciones.


馃敼 2️⃣ B煤squeda por rangos y comparaciones

Puedes filtrar documentos utilizando operadores como $gt, $lt, $gte, $lte:

// Buscar productos con precio entre 50 y 150
db.productos.find({
  precio: { $gte: 50, $lte: 150 }
});

馃敼 3️⃣ B煤squeda con expresiones regulares

Las expresiones regulares permiten buscar patrones en cadenas de texto:

// Buscar productos cuyo nombre empiece con "Teclado"
db.productos.find({
  nombre: { $regex: "^Teclado", $options: "i" }  // "i" para ignorar may煤sculas/min煤sculas
});

馃敼 4️⃣ Combinaci贸n de condiciones (AND/OR)

Para consultas m谩s complejas, puedes combinar m煤ltiples filtros:

// AND impl铆cito (todas las condiciones deben cumplirse)
db.productos.find({ categoria: "perif茅ricos", stock: { $gt: 0 } });

// OR expl铆cito
db.productos.find({
  $or: [
    { categoria: "perif茅ricos" },
    { precio: { $lt: 20 } }
  ]
});

馃敼 5️⃣ B煤squeda avanzada con agregaciones

Para consultas complejas que incluyan filtrado, transformaci贸n y ordenamiento, se recomienda el pipeline de agregaci贸n:

// Buscar productos disponibles y ordenar por precio
db.productos.aggregate([
  { $match: { stock: { $gt: 0 } } },
  { $sort: { precio: 1 } },
  { $project: { nombre: 1, precio: 1, stock: 1 } }
]);

馃Л 6️⃣ Buenas pr谩cticas de b煤squeda avanzada

  • Crea 铆ndices adecuados para campos que uses frecuentemente en b煤squedas.
  • Evita escanear toda la colecci贸n con consultas sin 铆ndices.
  • Usa operadores $text y expresiones regulares solo cuando sea necesario, ya que algunas b煤squedas regex pueden ser lentas.
  • Combina filtros simples y agregaciones para mejorar eficiencia.
  • Revisa siempre el plan de ejecuci贸n con explain() para identificar cuellos de botella.

馃Л 7️⃣ Resumen r谩pido

  • Los 铆ndices de texto permiten b煤squedas por palabras clave en campos de texto.
  • Los operadores de comparaci贸n y rangos filtran documentos seg煤n valores num茅ricos o fechas.
  • Las expresiones regulares permiten buscar patrones en cadenas.
  • Combinar condiciones con $and y $or facilita consultas complejas.
  • El pipeline de agregaci贸n es 煤til para b煤squedas avanzadas, ordenamiento y transformaci贸n de datos.

Publicar un comentario

0 Comentarios