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" }


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow