MongoDB
Consulta de datos (Primeros pasos)
Buscar..
Introducción
Ejemplos básicos de consulta
Encontrar()
recuperar todos los documentos en una colección
db.collection.find({});
recuperar documentos en una colección usando una condición (similar a DONDE en MYSQL)
db.collection.find({key: value});
example
db.users.find({email:"[email protected]"});
recuperar documentos en una colección usando condiciones booleanas (operadores de consultas)
//AND
db.collection.find( {
$and: [
{ key: value }, { key: value }
]
})
//OR
db.collection.find( {
$or: [
{ key: value }, { key: value }
]
})
//NOT
db.inventory.find( { key: { $not: value } } )
Más operaciones y ejemplos booleanos se pueden encontrar aquí
NOTA: find () continuará buscando en la colección incluso si se ha encontrado una coincidencia de documento, por lo tanto, es ineficiente cuando se usa en una colección grande, sin embargo, al modelar cuidadosamente sus datos y / o usar índices puede aumentar la eficiencia de búsqueda ( )
Encuentra uno()
db.collection.findOne({});
la funcionalidad de consulta es similar a la de find () pero esto terminará la ejecución en el momento en que encuentre que un documento coincide con su condición, si se usa con un objeto vacío, buscará el primer documento y lo devolverá. findOne () mongodb api documentación
Documento de consulta: uso de las condiciones AND, OR e IN
Todos los documentos de la colección de los students
.
> db.students.find().pretty();
{
"_id" : ObjectId("58f29a694117d1b7af126dca"),
"studentNo" : 1,
"firstName" : "Prosen",
"lastName" : "Ghosh",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcb"),
"studentNo" : 2,
"firstName" : "Rajib",
"lastName" : "Ghosh",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcc"),
"studentNo" : 3,
"firstName" : "Rizve",
"lastName" : "Amin",
"age" : 23
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcd"),
"studentNo" : 4,
"firstName" : "Jabed",
"lastName" : "Bangali",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dce"),
"studentNo" : 5,
"firstName" : "Gm",
"lastName" : "Anik",
"age" : 23
}
Consulta
mySql
similar del comando anterior.SELECT * FROM students;
db.students.find({firstName:"Prosen"});
{ "_id" : ObjectId("58f2547804951ad51ad206f5"), "studentNo" : "1", "firstName" : "Prosen", "lastName" : "Ghosh", "age" : "23" }
Consulta
mySql
similar del comando anterior.SELECT * FROM students WHERE firstName = "Prosen";
Y consultas
db.students.find({
"firstName": "Prosen",
"age": {
"$gte": 23
}
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Consulta
mySql
similar del comando anterior.SELECT * FROM students WHERE firstName = "Prosen" AND age >= 23
O consultas
db.students.find({
"$or": [{
"firstName": "Prosen"
}, {
"age": {
"$gte": 23
}
}]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcb"), "studentNo" : 2, "firstName" : "Rajib", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcc"), "studentNo" : 3, "firstName" : "Rizve", "lastName" : "Amin", "age" : 23 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcd"), "studentNo" : 4, "firstName" : "Jabed", "lastName" : "Bangali", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dce"), "studentNo" : 5, "firstName" : "Gm", "lastName" : "Anik", "age" : 23 }
Consulta
mySql
similar del comando anterior.SELECT * FROM students WHERE firstName = "Prosen" OR age >= 23
Y OR consultas
db.students.find({
firstName : "Prosen",
$or : [
{age : 23},
{age : 25}
]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Consulta mySql similar del comando anterior.
SELECT * FROM students WHERE firstName = "Prosen" AND age = 23 OR age = 25;
Consultas IN Estas consultas pueden mejorar el uso múltiple de consultas OR
db.students.find(lastName:{$in:["Ghosh", "Amin"]})
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcb"), "studentNo" : 2, "firstName" : "Rajib", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcc"), "studentNo" : 3, "firstName" : "Rizve", "lastName" : "Amin", "age" : 23 }
Consulta mySql similar al comando anterior
select * from students where lastName in ('Ghosh', 'Amin')
método find () con proyección
La sintaxis básica del método find()
con proyección es la siguiente
> db.COLLECTION_NAME.find({},{KEY:1});
Si desea mostrar todos los documentos sin el campo de antigüedad, el comando es el siguiente
db.people.find({},{age : 0});
Si desea mostrar a todos los documentos el campo de antigüedad, el comando es el siguiente
Método encontrar () con proyección
En MongoDB, proyección significa seleccionar solo los datos necesarios en lugar de seleccionar la totalidad de los datos de un documento.
La sintaxis básica del método find()
con proyección es la siguiente
> db.COLLECTION_NAME.find({},{KEY:1});
Si desea mostrar todo el documento sin el campo de antigüedad, el comando es el siguiente
> db.people.find({},{age:0});
Si desea mostrar solo el campo de edad, el comando es el siguiente
> db.people.find({},{age:1});
Nota: el campo _id
siempre se muestra mientras se ejecuta el método find()
, si no desea este campo, entonces debe configurarlo como 0
.
> db.people.find({},{name:1,_id:0});
Nota: 1
se usa para mostrar el campo, mientras que 0
se usa para ocultar los campos.
limitar, omitir, ordenar y contar los resultados del método find ()
Similar a los métodos de agregación también por el método find () tiene la posibilidad de limitar, omitir, ordenar y contar los resultados. Digamos que tenemos la siguiente colección:
db.test.insertMany([
{name:"Any", age:"21", status:"busy"},
{name:"Tony", age:"25", status:"busy"},
{name:"Bobby", age:"28", status:"online"},
{name:"Sonny", age:"28", status:"away"},
{name:"Cher", age:"20", status:"online"}
])
Para listar la colección:
db.test.find({})
Volverá
{ "_id" : ObjectId("592516d7fbd5b591f53237b0"), "name" : "Any", "age" : "21", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b1"), "name" : "Tony", "age" : "25", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b2"), "name" : "Bobby", "age" : "28", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Para saltar los primeros 3 documentos:
db.test.find({}).skip(3)
Volverá
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Para ordenar descendente por el nombre del campo:
db.test.find({}).sort({ "name" : -1})
Volverá
{ "_id" : ObjectId("592516d7fbd5b591f53237b1"), "name" : "Tony", "age" : "25", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b2"), "name" : "Bobby", "age" : "28", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b0"), "name" : "Any", "age" : "21", "status" : "busy" }
Si quieres ordenar ascendente simplemente reemplaza -1 por 1
Para contar los resultados:
db.test.find({}).count()
Volverá
5
También se permiten combinaciones de estos métodos. Por ejemplo, obtenga 2 documentos de la colección ordenada descendente saltándose el primer 1:
db.test.find({}).sort({ "name" : -1}).skip(1).limit(2)
Volverá
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }