Chapitre 3: MongoDB - Requête conditionnelle
Ce chapitre présente la requête conditionnelle de MongoDB, similaire aux opérateurs de comparaison tels que égal, supérieur à et inférieur à dans les instructions SQL.
Opérateurs conditionnels pris en charge par MongoDB
Opérateur | Description |
---|---|
$eq | Égal, similaire à l'opérateur = en SQL |
$gt | Supérieur à, similaire à l'opérateur > en SQL |
$gte | Supérieur ou égal à, similaire à l'opérateur >= en SQL |
$in | Correspond à un tableau, une valeur quelconque, similaire à la requête in en SQL |
$lt | Inférieur à, similaire à l'opérateur < en SQL |
$nin | Ne correspond à aucune valeur dans le tableau, similaire à l'opérateur not in en SQL |
Données de test
Les données de la collection d'inventaire sont les suivantes
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
$eq (Correspondance égale)
db.inventory.find( { qty: { $eq: 20 } } )
db.inventory.find( { "item.name": { $eq: "ab" } } )
// Abrégé, peut ignorer l'opérateur $eq, qty = 20
db.inventory.find( { qty: 20 } )
Équivalent SQL:
select * from inventory where qty = 20
// C'est juste un exemple, SQL ne prend pas en charge le format des champs imbriqués comme item.name
select * from inventory where item.name = 20
$gt (Supérieur à)
db.inventory.find( { qty: { $gt: 20 } } )
Équivalent SQL:
select * from inventory where qty > 20
$gte (Supérieur ou égal à)
db.inventory.find( { qty: { $gte: 20 } } )
Équivalent SQL:
select * from inventory where qty >= 20
$in
Correspond à une valeur dans le tableau
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
Équivalent SQL:
select * from inventory where qty in (5, 15)
$nin
Contraire de l'opérateur $in
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
Équivalent SQL:
select * from inventory where qty not in (5, 15)
$lt (Inférieur à)
db.inventory.find( { qty: { $lt: 20 } } )
Équivalent SQL:
select * from inventory where qty < 20