Ir al contenido
Documentación

Manual de prueba — NoSqlStudio Query Studio

Una guía paso a paso para abrir, usar y validar Query Studio — el shell unificado de autoría de queries.

Tiempo estimado: ~20 minutos
En este manual

Introducción

Una guía paso a paso para ayudarte a abrir, usar y validar Query Studio — el shell unificado de autoría de queries de NoSqlStudio. Cinco herramientas — find · Visual · SQL · Fluent · Relaciones — convergen en una query única acotada a una `db.colección`, que luego ejecutas, explicas, exportas y guardas — con EJSON y GridFS en el mismo shell. Sigue del Paso 1 hasta el final, en orden.

Cómo leer este manual

Cada paso tiene:

  • Haz — la acción exacta (hacer clic, escribir, ejecutar tal comando).
  • Mira — qué debe ocurrir en pantalla. Este es tu “pasa / falla”.
  • Por qué — contexto adicional, solo cuando ayuda (sáltalo si vas con prisa).

Antes de empezar

Concepto

Qué es Query Studio

Query Studio te permite componer una sola query de MongoDB desde cinco ángulos distintos — un filtro find en JSON, un Visual Builder, ANSI SQL, una cadena Fluent o Relaciones $lookup — todos apuntando a una única db.colección. Luego la ejecutas, explicas y exportas, con utilidades de EJSON y GridFS integradas.

Atención

Query Studio necesita una conexión activa

Query Studio funciona sobre un MongoDB conectado. No escribe nada en la base por sí mismo — solo las queries que ejecutas explícitamente tocan tus datos, y el recorrido de abajo es todo de solo lectura.

Vas a necesitar:

  1. 1Un MongoDB conectado con al menos una base y algunas colecciones con documentos de ejemplo.
  2. 2Dos colecciones que compartan una clave (por ejemplo orders con customerId y customers con _id) para probar una Relación $lookup.
  3. 3Opcionalmente, una segunda base con una colección relacionada, para probar una relación cross-database.

Tiempo estimado para el recorrido completo: ~20 minutos.

Etapa 1

Tu primera query

Abre Query Studio y acótalo a una única db.colección.

Paso 1

Abre Query Studio

Haz

Con una conexión activa, abre Query Studio: desde el Home, haz clic en la tarjeta Query Studio, o usa el menú Tools ▸ Shell & CLI ▸ Query Studio (atajo de teclado Ctrl+Alt+Q).

Mira

Query Studio abre vacío — los dos selectores de arriba muestran placeholders y nada se autoselecciona.

Por qué

Query Studio necesita una conexión para listar bases y colecciones. Nada viene preelegido, así que siempre arrancas desde un alcance limpio y explícito.

Paso 2

Elige la base

Haz

En la barra superior, usa el primer selector con búsqueda (typeahead) Select Database — escribe o elige la base (la lista viene de la conexión actual).

Mira

La base queda seleccionada, y el segundo selector se repuebla con las colecciones de esa base.

Paso 3

Elige la colección

Haz

Usa el segundo selector con búsqueda (typeahead) Select Collection y elige una colección — por ejemplo orders.

Mira

Aparece el chip namespace: <db>.<colección> (por ejemplo namespace: shop.orders). Toda query queda ahora acotada a ese namespace (use <db> + db.<colección>…).

Por qué

El chip de namespace es el contrato de toda la pantalla — find, Visual, SQL, Fluent y Relaciones construyen la query exactamente sobre esa db.colección.

Etapa 2

Filtro (find) y el Visual Builder

Compón un filtro de dos formas — JSON crudo, y luego el Visual Builder con su editor de valor inteligente.

Paso 4

Escribe un filtro JSON

Haz

Abre el rail ◆ Filtro (find) y escribe un filtro JSON, por ejemplo:

js·1 linha
{ "status": "paid" }
Mira

La Query generada muestra db.<colección>.find({…}).limit(25). Un JSON inválido queda con borde rojo y un mensaje de error.

Paso 5

Agrega una condición en el Visual Builder

Haz

Abre el rail 🎯 Visual Builder y haz clic en + Condición. Elige un campo (lista los atributos de la colección; escribe para filtrar), un operador (=, , >, , <, , ∈ in, ∉ nin, ∃ exists, ~ regex, type, size, all, mod, elemMatch), un tipo (string/number/boolean/null/date/ObjectId/JSON) y un valor.

Mira

La condición se agrega y la Query generada se actualiza para reflejarla.

Paso 6

Usa el editor de valor inteligente

Haz

Observa cómo el editor de valor se adapta al campo y al tipo: un campo boolean da un select true/false, un campo date da un date-picker, y un campo cuya muestra tiene ≤25 valores distintos (un “enum”) da un dropdown con los valores vistos.

Mira

En un campo enum eliges de un dropdown; en un boolean eliges true/false; en una fecha eliges de un calendario — sin tener que escribir el valor a mano.

Por qué

El editor muestrea tus datos para ofrecer el control adecuado, en vez de dejar cada valor como texto libre.

Paso 7

Busca valores en un campo de alta cardinalidad

Haz

Elige un campo con muchos valores distintos. Si está indexado, escribe para buscar por prefijo en el índice. Si no está indexado, haz clic en Muestrear 1000 docs ($sample) para traer valores candidatos.

Mira

Los valores que coinciden aparecen a medida que escribes (indexado) o tras el muestreo (no indexado).

Concepto

Query Studio nunca ejecuta un distinct() global. En campos de alta cardinalidad usa una búsqueda por prefijo en el índice o un $sample acotado a 1000 docs, así se mantiene económico en colecciones grandes.

Paso 8

Anida condiciones en grupos

Haz

Haz clic en + Grupo para anidar un grupo, y define su combinador como AND, OR o NOR. Usa × para quitar una condición o un grupo.

Mira

Las condiciones se anidan bajo el combinador del grupo, y la Query generada refleja la lógica booleana.

Etapa 3

SQL → Mongo y Fluent

Compón la misma query como ANSI SQL o como una cadena estilo Mongoose, y mira tu trabajo sobrevivir al cambio de herramienta.

Paso 9

Escribe SQL y aplícalo

Haz

Abre el rail 🔤 SQL → Mongo, escribe ANSI SQL (o haz clic en ejemplo 1 / 2), luego haz clic en Aplicar →.

Mira

El SQL se traduce en un pipeline, con una confirmación como ✓ aplicado · pipeline (N estágios).

Paso 10

Escribe una cadena Fluent y aplícala

Haz

Abre el rail 🧩 Fluent, escribe una cadena estilo Mongoose (o haz clic en ejemplo 1 / 2), por ejemplo:

js·1 linha
db.users.where('age').gte(18).sort('-age').limit(50)
Haz

Haz clic en Aplicar →.

Mira

La cadena se convierte en la Query generada, con una etiqueta fonte: que indica que vino de Fluent.

Paso 11

Confirma que cambiar de herramienta preserva el trabajo

Haz

Alterna entre los rails (Filtro, Visual Builder, SQL, Fluent) y vuelve.

Mira

Lo que armaste en cada herramienta se preserva, y la etiqueta fonte: en la Query generada indica qué herramienta produjo la query actual.

Por qué

Puedes bocetar en una herramienta, refinar en otra, y nunca perder el borrador anterior.

Etapa 4

Relaciones ($lookup)

Relaciona una o N colecciones con $lookup, incluyendo joins cross-database que corren en el cliente.

Paso 12

Agrega una relación

Haz

Abre el rail 🔗 Relaciones ($lookup) y haz clic en + Relación. Elige el database y la colección (from) de la relación — al elegirla, sus atributos cargan en los pickers.

Mira

Aparece un bloque de relación, y los campos de la colección relacionada quedan disponibles para mapear.

Paso 13

Nombra la salida y define las claves de join

Haz

Define el as — el nombre del campo de salida (por defecto = nombre de la colección). Luego define las claves de join (igualdad): un par campo base ↔ campo relacionado. Para una clave compuesta, haz clic en + par para agregar más pares; si las columnas comparten nombre, haz clic en los chips “en común:” para emparejar campos del mismo nombre automáticamente.

Mira

Las claves de join quedan mapeadas, y la Query generada muestra el $lookup que se está construyendo.

Paso 14

Elige la cardinalidad

Haz

Define la cardinalidad: 1:N (el resultado es un array) o 1:1 (el resultado se aplana con $unwind).

Mira

1:N mantiene los docs relacionados como un array bajo el as; 1:1 lo aplana a un único documento embebido.

Paso 15

Filtra la relacionada y agrega un $match opcional

Haz

Opcionalmente llena filtrar relacionada (JSON) — en relaciones mismo-db se vuelve un sub-pipeline dentro del $lookup; en cross-db se vuelve un find en la colección relacionada. Opcionalmente llena $match opcional (JSON) — mismo-db: aplicado tras el $lookup y puede usar campos traídos (por ejemplo { "orders.total": { "$gt": 100 } }); cross-db: filtra la colección base.

Mira

La Query generada incorpora el sub-pipeline y/o la etapa $match.

Paso 16

Deja que Query Studio sugiera relaciones

Haz

Haz clic en ✨ Sugerir relaciones para inferir relaciones (claves foráneas + campos compartidos) y autocompletar los pares y la cardinalidad. Marca cross-db para inferir relaciones entre databases (muestra más amplia, más lenta).

Mira

Las relaciones sugeridas aparecen con sus pares de join y cardinalidad ya completados.

Paso 17

Arma una relación cross-database

Haz

En una relación, elige un database distinto del database base.

Mira

Aparece el distintivo cross-db (join en el cliente). Como el $lookup nativo es solo mismo-db, la Query generada muestra un plan (base + relacionadas + merge) en vez de un único pipeline, y el Run ejecuta el join en la app por igualdad de clave.

Atención

Límite conocido: en un join cross-database el lado relacionado se lee con un tope de 2000 docs. Una colección relacionada muy grande puede truncarse.

Etapa 5

Ejecutar, Explicar y Exportar

Genera la query en el formato que quieras, ejecútala, explícala y pagina los resultados.

Paso 18

Elige un formato de exportación y copia

Haz

En el panel derecho, usa el selector de formato de la Query generada para alternar entre mongosh / JSON / Node.js / Python, luego haz clic en Copiar.

Mira

La query se muestra en el formato elegido, y Copiar copia exactamente ese formato al portapapeles.

Paso 19

Ejecuta la query

Haz

Haz clic en Run ▶.

Mira

La query se ejecuta y trae los documentos. ObjectId() / ISODate() se materializan como BSON real en el Run.

Paso 20

Explica la query

Haz

Haz clic en Explain.

Mira

Se muestra el plan (queryPlanner) — tanto para find como para aggregate.

Paso 21

Navega los resultados y pagina

Haz

En el área de resultado, alterna entre Tabla y JSON, ajusta docs/página (10/25/50/100) y navega con ‹ ›.

Mira

Los resultados se renderizan como tabla o como JSON, y el paginador muestra “pág N” a medida que avanzas.

Etapa 6

Biblioteca e historial

Guarda snapshots de query, recárgalos y mira un historial de cada Run — todo persistido entre reinicios.

Paso 22

Guarda un snapshot en la Biblioteca

Haz

En el panel de la query, haz clic en ★ Biblioteca, luego en Guardar y dale un nombre.

Mira

Se almacena un snapshot completo — la db/colección/herramienta más el estado de filtro / visual / SQL / fluent / relaciones.

Paso 23

Recarga una query guardada y revisa el historial

Haz

En Guardados, haz clic en una entrada para recargarla (el × la elimina). En Historial, cada Run queda registrado — haz clic en una entrada para recargarla, o limpiar para vaciar el historial.

Mira

Hacer clic en una entrada guardada restaura el estado completo de la query; la lista de Historial crece en una entrada por Run.

Paso 24

Confirma la persistencia

Haz

Guarda una query, ejecuta otra, luego cierra y vuelve a abrir la app.

Mira

Tus queries guardadas y el historial siguen ahí — la Biblioteca persiste en localStorage y sobrevive a cerrar y reabrir la app.

Etapa 7

Utilidades (EJSON y GridFS)

Dos auxiliares viven en el mismo shell: un conversor de Extended JSON y un navegador de GridFS.

Paso 25

Convierte con la utilidad EJSON

Haz

Abre la utilidad 🔁 EJSON, pega Extended JSON y usa → A shell y ← A EJSON; alterna canonical / relaxed.

Mira

El conversor reescribe ObjectId / ISODate / Decimal128 y tipos similares entre EJSON y la sintaxis del shell, en la forma canonical o relaxed elegida.

Paso 26

Navega archivos con GridFS

Haz

Abre la utilidad 🗃️ GridFS, indica el bucket (fs), y lista los archivos de <db>.<bucket>.files. Usa buscar filename… para filtrar la lista, Ver para una vista previa de imagen o texto, y Descargar para rearmar el archivo a partir de sus .chunks.

Mira

Los archivos del bucket se listan; Ver muestra una vista previa y Descargar rearma y guarda el archivo completo.

Etapa 8

Tema

Paso 27

Cambia el tema

Haz

Usa el menú Theme (claro / oscuro / temas) y mira a Query Studio seguirlo.

Mira

El fondo, las superficies, el texto, los bordes y el resaltado de código de la Query generada se adaptan al tema elegido, manteniendo la legibilidad tanto en Light como en Dark.

Limpieza (cuando termines)

No se requiere nada destructivo. Query Studio no escribe nada en la base por sí mismo — solo las queries que ejecutas tocan tus datos, y este recorrido es todo de solo lectura.

Haz

Si quieres empezar de cero, cierra la pestaña de Query Studio y, en la ★ Biblioteca, usa limpiar para vaciar el historial de Run. Tus queries guardadas siguen en localStorage hasta que las elimines con ×.

Mira

La pestaña se cierra y el historial queda vacío; tu base queda intacta.

Resumen de lo que validaste

EtapaFuncionalidad
1Abrir Query Studio y acotarlo a una única db.colección
2Componer un filtro JSON y crear condiciones en el Visual Builder con su editor de valor inteligente
3Traducir ANSI SQL y una cadena Fluent en una query, preservada al cambiar de herramienta
4Relacionar colecciones con Relaciones $lookup, incluyendo un join cross-database en el cliente
5Ejecutar, Explicar, exportar en mongosh/JSON/Node.js/Python y paginar los resultados
6Guardar snapshots en la Biblioteca, recargarlos y revisar el historial por Run que persiste
7Convertir Extended JSON y navegar archivos GridFS (Ver / Descargar)
8Query Studio sigue el menú Theme
Si cada paso dio el “Mira” esperado, Query Studio está 100% validado. Anota el número del paso de cualquier discrepancia para que podamos corregirlo.