Este capítulo apresenta a sintaxe básica de consulta do MongoDB através do shell do mongo. No shell do mongo, o método db.collection.find()
é usado para consultar dados.
Preparar dados de teste
Inserir alguns dados na coleção de inventário.
db.inventory.insertMany([
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Consultar todos os documentos
Consultar todos os documentos na coleção de inventário, {} representa uma condição de consulta vazia.
db.inventory.find( {} )
Similar à seguinte declaração SQL:
SELECT * FROM inventory
Condições de consulta de igualdade
Sintaxe:
{ campo: valor, ... }
Exemplo 1:
db.inventory.find( { status: "D" } )
Similar à seguinte declaração SQL:
SELECT * FROM inventory WHERE status = "D"
Exemplo 2: Consulta de campo aninhado, use um ponto (.) para conectar os campos de documentos aninhados.
db.inventory.find( { "size.uom": "in" } )
Similar à seguinte declaração SQL:
SELECT * FROM inventory WHERE size.uom = "in"
Observação: Os documentos do MongoDB são armazenados em formato JSON, então suportam o uso de campos aninhados como condições de consulta.
Usando operadores de consulta
O MongoDB suporta uma variedade de operadores de consulta para implementar várias consultas complexas. Sintaxe:
{ <campo1>: { <operador1>: <valor1> }, ... }
Explicação:
- campo1: nome do campo
- operador1: operador
- valor1: parâmetro do operador
Exemplo do operador $in:
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
Similar à seguinte consulta SQL com o operador "in":
SELECT * FROM inventory WHERE status in ("A", "D")
Observação: Para detalhes sobre os operadores, consulte a seção de detalhes da consulta do MongoDB subsequente.
Condição and
Similar ao SQL, o MongoDB também suporta a condição and.
Exemplo:
// Inserir múltiplas condições consecutivamente e conectar as condições usando and
db.inventory.find( { status: "A", item: "postcard"} )
Similar à seguinte declaração SQL:
SELECT * FROM inventory WHERE status = "A" AND item = "postcard"
Condição or
Similar ao SQL, o MongoDB também suporta a condição or, que é implementada através do operador $or.
Sintaxe:
{
$or: [
{condição1},
{condição2},
.....
]
}
Exemplo:
db.inventory.find( { $or: [ { status: "A" }, { item: "postcard"} ] } )
Similar à seguinte declaração SQL:
SELECT * FROM inventory WHERE status = "A" OR item = "postcard"
Combinando condições and e or
Similar ao SQL, o MongoDB pode combinar condições de consulta complexas usando and e or.
Exemplo:
db.inventory.find( {
status: "A",
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )
Aqui, o operador $lt para menor que e a correspondência de expressão regular são usados.
Isso é similar à seguinte declaração SQL:
SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 or item like 'p%')
Dica: Para uma explicação detalhada das condições de consulta do MongoDB, consulte os capítulos subsequentes.