https://docs.mongodb.com/manual/tutorial/query-documents/
https://docs.mongodb.com/manual/reference/operator/query/#query-selectors
Si yo en sql quiero aquellos registros cuya qty > 50
where qty>50
Si yo en MongoDB quiero lo mismo tengo que ponerlo así:
qty:{$gt:50}
campo:{operador:valor}
-- Buscar todos db.inventory.find(); -- Buscar por igualdad. El campo debe valor lo mismo que lo que le pongo db.inventory.find( { status: "D" } ) -- Buscar usando un operador. Ojo porque la sintaxis es un poco extraña db.inventory.find( { qty: {$gt:50} } ) -- Operador in db.inventory.find({status:{$in:["A","D"]}}); -- Por defecto, si tenemos varias condiciones, se entiende que se tienen que cumplir todas (AND) db.inventory.find( { status: "A", qty: { $lt: 30 } } ) db.inventory.find({ $or: [ {status:"D"}, {qty:{ $lt:50 } } ] }) db.inventory.find({$or: [{status:"D"},{qty:{$lt:50}}]}) -- esto db.inventory.find( { status: "A", $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ] } ) -- sería equivalente a: SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%") db.inventory.find({qty:{$gte:40,$lte:60}}) -- En búsquedas anidadas por defecto se entiende la igualdad abosulta en valores y orden: db.inventory.find( { size: { w: 21,h: 14, uom: "cm" } } ) -- esto no lo encuentra db.inventory.find({size:{h:14}}) -- Esto tampoco db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } ) -- Esto sí -- Para buscar por un valor concreto independientemente de optras propiedades usamos el . (punto) db.inventory.find({"size.h":8.5}) -- Podemos usar varias condiciones tanto de propiedades anidadas como de propiedades normales db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } ) -- Al buscar en array la igualdad es como en los anidades: mismos valores en mismo orden -- Las dos consultas siguientes nos devuelven diferentes resultados db.inventory.find( { tags: [ "blank","red"] } ) db.inventory.find( { tags: ["red", "blank"] } ) -- Si yo omito los corchetes y uso un valor (o un operador) se busan los elementos que contengan el valor o que cumplan la condición: db.inventory.find({tags:"red"}) -- Busca los que tengan 'red' en el array db.inventory.find({tags:{$in:["red","blue"]}}) -- Que tengan "red" o "blue" en alguna parte del array db.inventory.find( { dim_cm: { $gt: 25 } } ) -- Algún elemento del array sea mayor de 25 -- Las dos condiciones se tienen que cumplir pero lo pueden cumplir elementos diferentes del array -- Es decir, una condición la puede cumplir un elemento y la otra otro. db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } ) -- Las dos condiciones las tiene que cumplir juntas al menos un elemento del array db.inventory.find( { dim_cm: { $elemMatch: { $gt: 15, $lt: 20 } } } ) -- Busco en un array en una posición concreta (índice de base 0) db.inventory.find( { "dim_cm.1": { $gt: 25 } } ) -- Buscar los documentos cuyo array tiene una longitud determinada db.inventory.find( { "tags": { $size: 3 } } ) -- Buscar los documentos en cuyo array haya un elemento que cumpla esa condición: db.inventory.find( { "instock.warehouse": "C" } ) db.inventory.find( { "instock.qty": {$gte:40}} ) -- Que me muestre sólo los campos 'item' y 'status'. El id se ve siempre por defecto db.inventory.find( { status: "A" }, { item: 1, status: 1 } ) -- Que me muestre sólo los campos 'item' y 'status'. El id lo oculto db.inventory.find( { status: "A" }, { item: 1, status: 1, _id:0 } ) -- Que se muestren todos los campos menos 'size' e 'instock' db.inventory.find( { status: "A" }, { size:0,instock:0 } ) -- Podemos usar $slice para obtener en la proyección subconjuntos de un array, y permite valores negativos db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } ) -- Busca los documentos que no tengan la propiedad o que valga nulo db.inventory.find( { item: null } ) -- Busca los documentos que no tengan la propiedad, si la tienen y vale nulo no los encuentra db.inventory.find( { item : { $exists: false } } ) -- Busca los documentos que SI tengan la propiedad aunque valga nulo db.inventory.find( { item : { $exists: true } } )