English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este capítulo, aprenderemos a consultar documentos en una colección de MongoDB.
Para consultar datos en una colección de MongoDB, debe usarfind()Método.
find()La sintaxis básica del método es la siguiente-
> db.COLLECTION_NAME.find()
find() El método mostrará todos los documentos de manera no estructurada.
Supongamos que ya hemos creado una colección llamada mycol-
> usar sampleDB cambiado a db sampleDB > crearColección("mycol") { "ok" : }} 1 } >
y usar el método insert() para insertar en ella3un documento, como se muestra a continuación-
> db.mycol.insert([ { title: "Resumen de MongoDB", description: "MongoDB no es una base de datos SQL", by: "Tutoriales básicos", url: "http://es.oldtoolbag.com", tags: ["mongodb", "base de datos", "NoSQL"], likes: 100 } { title: "Base de Datos NoSQL", description: "Las bases de datos NoSQL no tienen tablas", by: "Tutoriales básicos", url: "http://es.oldtoolbag.com", tags: ["mongodb", "base de datos", "NoSQL"], likes: 20, comments: [ { user: "user1", message: "Mi primer comentario", dateCreated: new Date(2013,11,10,2,35), like: 0 } ] } ])
Los siguientes métodos recuperan todos los documentos de la colección.-
> db.mycol.find(), { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "Resumen de MongoDB", "description" : "MongoDB no es una base de datos SQL", "by" : "Tutoriales básicos", "url" : "http://es.oldtoolbag.com", "tags" : ["mongodb", "base de datos", "NoSQL"], "likes" : 100 } { "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "Base de Datos NoSQL", "description" : "Las bases de datos NoSQL no tienen tablas", "by" : "Tutoriales básicos", "url" : "http://es.oldtoolbag.com", "tags" : ["mongodb", "base de datos", "NoSQL"], "likes" : 20, "comments" : [{ "user" : "user1", "message" : "Mi primer comentario", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 }]} >
Para mostrar los resultados en un formato estructurado, se puede utilizar el método pretty().
> db.COLLECTION_NAME.find().pretty(),
A continuación se muestra un ejemplo de cómo recuperar todos los documentos de la colección llamada mycol y organizarlos en un formato legible.
> db.mycol.find().pretty(), { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title": "MongoDB Resumen", "description": "MongoDB no es una base de datos SQL", "by": "tutoriales básicos", "url" : "http://es.oldtoolbag.com", "tags": [ "mongodb", "base de datos", "NoSQL" ], "likes": : 100 } { "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "Base de Datos NoSQL", "description" : "NoSQL database does not have tables" "by": "tutoriales básicos", "url" : "http://es.oldtoolbag.com", "tags": [ "mongodb", "base de datos", "NoSQL" ], "likes": : 20, "comments" : [ { "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 } ] }
Además del método find(), hay otrofindOne()El método solo devuelve un documento.
>db.COLLECTIONNAME.findOne()
A continuación se muestra un ejemplo de búsqueda de documentos con el título MongoDB Overview.
> db.mycol.findOne({title: "MongoDB Overview"}) { "_id" : ObjectId("5dd6542170fb13eec3963bf0"), "title": "MongoDB Resumen", "description": "MongoDB no es una base de datos SQL", "by": "tutoriales básicos", "url" : "http://es.oldtoolbag.com", "tags": [ "mongodb", "base de datos", "NoSQL" ], "likes": : 100 }
Para consultar documentos según ciertas condiciones, puede usar las siguientes operaciones.
Operación | Formato | Ejemplo | La expresión similar en RDBMS |
---|---|---|---|
Igual | {<key>:<value>} | db.col.find({"by":"base tutorial"}).pretty() | where by = 'base tutorial' |
Menor que | {<key>:{$lt:<value>}} | db.col.find({"likes":{$lt:50}).pretty() | where likes < 50 |
Menor o igual que | {<key>:{$lte:<value>}} | db.col.find({"likes":{$lte:50}).pretty() | where likes <= 50 |
Mayor que | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}).pretty() | where likes > 50 |
Mayor o igual que | {<key>:{$gte:<value>}} | db.col.find({"likes":{$gte:50}).pretty() | where likes >= 50 |
No es igual | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}).pretty() | where likes != 50 |
El valor está en el array | {<key>:{$in:[<value1, <value2,……<valueN>]] | db.mycol.find({"name":{$in:["Raj", "Ram", "Raghu"]}}).pretty() | Donde el nombre coincide con cualquier valor dentro :["Raj", "Ram", "Raghu"] |
El valor no está en el array | {<key>:{$nin:<value>}} | db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty() | El valor del nombre no está en el array :["Ramu", "Raghav"] o no existe en absoluto |
Para realizar consultas de documentos basadas en la condición "AND", se debe utilizar la palabra clave $and. A continuación, se muestra la sintaxis básica de AND-
>db.mycol.find({ $and: [ { <key1> :<value1> }, { <key2> :<value2> } ] )
El siguiente ejemplo mostrará todos los tutoriales escritos por "tutoriales básicos" y con el título "MongoDB Resumen".
> db.mycol.find({$and:[{"by":"tutoriales básicos"},{"title": "MongoDB Resumen"}]}).pretty() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title": "MongoDB Resumen", "description": "MongoDB no es una base de datos SQL", "by": "tutoriales básicos", "url": "https://es.oldtoolbag.com", "tags": [ "mongodb", "base de datos", "NoSQL" ], "likes": : 100 } >
Para el ejemplo proporcionado anteriormente, la cláusula WHERE equivalente será' where by = 'tutoriales básicos' AND title = 'MongoDB Resumen' '. Puede pasar cualquier cantidad de pares clave-valor en la cláusula find.
Para realizar consultas de documentos basadas en la condición "OR", se debe utilizar$orpalabra clave. A continuación, se muestraORLa gramática básica de:
>db.mycol.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
El siguiente ejemplo mostrará todos los tutoriales escritos por "tutorials point" o con el título "MongoDB Resumen".
>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Resumen"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Resumen", "description": "MongoDB no es una base de datos SQL", "by": "基础教程", "url": "http://es.oldtoolbag.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
El siguiente ejemplo mostrará los documentos que tienen likes mayor que}}10y el título es "Resumen de MongoDB" o by es "基础教程" de los documentos. Equivalente a la cláusula WHERE de SQL "where likes>10 AND (by = '基础教程' OR title = 'Resumen de MongoDB')
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"}, {"title": "Resumen de MongoDB"}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "Resumen de MongoDB", "description": "MongoDB no es una base de datos SQL", "by": "基础教程", "url": "http://es.oldtoolbag.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
Para realizar consultas de documentos con condiciones NOR, se debe usar la clave $nor. A continuación se muestra:NORLa gramática básica de:
> db.COLLECTION_NAME.find( { $nor: [ {key1: value1}, {key2:value2} ] } )
Supongamos que estamos en la colección empDetails se insertó en3un documento, como se muestra a continuación-
db.empDetails.insertMany( [ { First_Name: "Radhika", Last_Name: "Sharma", Edad: "26", e_mail: "[email protected]", phone: "9000012345" } { First_Name: "Rachel", Last_Name: "Christopher", Edad: "27", e_mail: "[email protected]", phone: "9000054321" } { First_Name: "Fathima", Last_Name: "Sheik", Edad: "24", e_mail: "[email protected]", phone: "9000054321" } ] )
El siguiente ejemplo buscará documentos cuyos nombres no son "Radhika" y cuyos nombres tampoco son "Christopher"
> db.empDetails.find( { $nor:[ 40 {"First_Name": "Radhika"}, {"Last_Name": "Christopher"} ] } ).pretty() { "_id" : ObjectId("5dd631f270fb13eec3963bef"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }
Para realizar una consulta de documentos con condición NOT, debe usar la palabra clave $not, a continuación:NOTSintaxis básica:
> db.COLLECTION_NAME.find( { $NOT: [ {key1: value1}, {key2:value2} ] } ).pretty()
El siguiente ejemplo recuperará los documentos de edad no superior a25años de documentos
> db.empDetails.find( { "Age": { $not: { $gt: "25} } ) { "_id" : ObjectId("5dd6636870fb13eec3963bf7") "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }