Este capítulo presenta la sintaxis básica de consulta de MongoDB a través de la consola mongo. En la consola mongo, se utiliza el método db.collection.find()
para consultar datos.
Prepare datos de prueba
Insertar algunos datos en la colección de inventario.
db.inventory.insertMany([
{ item: "diario", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "cuaderno", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "papel", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planificador", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postal", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Consultar todos los documentos
Consultar todos los documentos en la colección de inventario, {} representa una condición de consulta vacía.
db.inventory.find( {} )
Similar a la siguiente declaración SQL:
SELECT * FROM inventario
Condiciones de consulta de igualdad
Sintaxis:
{ campo: valor, ... }
Ejemplo 1:
db.inventory.find( { status: "D" } )
Similar a la siguiente declaración SQL:
SELECT * FROM inventario WHERE status = "D"
Ejemplo 2: Consulta de campo anidado, use un punto (.) para conectar los campos de documentos anidados.
db.inventory.find( { "size.uom": "in" } )
Similar a la siguiente declaración SQL:
SELECT * FROM inventario WHERE size.uom = "in"
Nota: Los documentos de MongoDB se almacenan en formato JSON, por lo que admiten el uso de campos anidados como condiciones de consulta.
Uso de operadores de consulta
MongoDB admite una variedad de operadores de consulta para implementar varias consultas complejas. Sintaxis:
{ <campo1>: { <operador1>: <valor1> }, ... }
Explicación:
- campo1: nombre del campo
- operador1: operador
- valor1: parámetro del operador
Ejemplo del operador $in:
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
Similar a la siguiente consulta SQL con el operador "in":
SELECT * FROM inventario WHERE status in ("A", "D")
Nota: Para obtener detalles sobre operadores, consulte la sección posterior Detalles de la consulta de MongoDB.
Condición "and"
Similar a SQL, MongoDB también admite la condición "and". Ejemplo:
// Ingrese múltiples condiciones consecutivas y conecte las condiciones usando and
db.inventory.find( { status: "A", item: "postal"} )
Similar a la siguiente declaración SQL:
SELECT * FROM inventario WHERE status = "A" AND item = "postal"
Condición "or"
Similar a SQL, MongoDB también admite la condición "or", que se implementa a través del operador $or.
Sintaxis:
{
$or: [
{condición1},
{condición2},
.....
]
}
Ejemplo:
db.inventory.find( { $or: [ { status: "A" }, { item: "postal"} ] } )
Similar a la siguiente declaración SQL:
SELECT * FROM inventario WHERE status = "A" OR item = "postal"
Combinar condiciones "and" y "or"
Similar a SQL, MongoDB puede combinar condiciones de consulta complejas usando "and" y "or". Ejemplo:
db.inventory.find( {
status: "A",
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )
Aquí, se utiliza el operador $lt para menor que y coincidencia de expresión regular.
Esto es similar a la siguiente declaración SQL:
SELECT * FROM inventario WHERE status = "A" AND ( qty < 30 or item like 'p%')
Nota: Para obtener una explicación detallada de las condiciones de consulta de MongoDB, consulte los capítulos posteriores.