Questo capitolo introduce la sintassi di base delle query di MongoDB tramite la shell di mongo. Nella shell di mongo, il metodo db.collection.find()
viene utilizzato per interrogare i dati.
Preparare i dati di test
Inserire alcuni dati nella collezione di inventario.
db.inventory.insertMany([
{ item: "diario", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "quaderno", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "carta", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "agenda", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "cartolina", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Interrogare tutti i documenti
Interrogare tutti i documenti nella collezione di inventario, {} rappresenta una condizione di query vuota.
db.inventory.find( {} )
Simile alla seguente istruzione SQL:
SELECT * FROM inventory
Condizioni di query di uguaglianza
Sintassi:
{ campo: valore, ... }
Esempio 1:
db.inventory.find( { status: "D" } )
Simile alla seguente istruzione SQL:
SELECT * FROM inventory WHERE status = "D"
Esempio 2: Query di campo nidificato, utilizzare un punto (.) per collegare i campi dei documenti nidificati.
db.inventory.find( { "size.uom": "in" } )
Simile alla seguente istruzione SQL:
SELECT * FROM inventory WHERE size.uom = "in"
Nota: I documenti di MongoDB sono memorizzati in formato JSON, quindi supportano l'utilizzo di campi nidificati come condizioni di query.
Utilizzo degli operatori di query
MongoDB supporta una varietà di operatori di query per implementare varie query complesse. Sintassi:
{ <campo1>: { <operatore1>: <valore1> }, ... }
Spiegazione:
- campo1: nome del campo
- operatore1: operatore
- valore1: parametro dell'operatore
Esempio dell'operatore $in:
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
Simile alla seguente query SQL con l'operatore "in":
SELECT * FROM inventory WHERE status in ("A", "D")
Nota: Per i dettagli sugli operatori, fare riferimento alla sezione successiva dei dettagli della query di MongoDB.
Condizione di and
Simile a SQL, MongoDB supporta anche la condizione and.
Esempio:
// Immettere più condizioni consecutivamente e collegare le condizioni usando and
db.inventory.find( { status: "A", item: "cartolina"} )
Simile alla seguente istruzione SQL:
SELECT * FROM inventory WHERE status = "A" AND item = "cartolina"
Condizione di or
Simile a SQL, MongoDB supporta anche la condizione or, che viene implementata attraverso l'operatore $or.
Sintassi:
{
$or: [
{condizione1},
{condizione2},
.....
]
}
Esempio:
db.inventory.find( { $or: [ { status: "A" }, { item: "cartolina"} ] } )
Simile alla seguente istruzione SQL:
SELECT * FROM inventory WHERE status = "A" OR item = "cartolina"
Combinare condizioni di and e or
Simile a SQL, MongoDB può combinare condizioni di query complesse utilizzando and e or.
Esempio:
db.inventory.find( {
status: "A",
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )
Qui vengono utilizzati l'operatore $lt per minore di e il confronto tramite espressione regolare.
Questo è simile alla seguente istruzione SQL:
SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 or item like 'p%')
Suggerimento: Per una spiegazione dettagliata delle condizioni di query di MongoDB, fare riferimento ai capitoli successivi.