En este capítulo, aprenderemos cómo consultar documentos de la colección MongoDB.
Para consultar datos de la colección MongoDB, debe usar MongoDB encontrar() método.
Sintaxis básica encontrar() el método se ve así:
>db.COLLECTION_NAME.find()
encontrar() el método mostrará todos los documentos de forma no estructurada.
Supongamos que creamos una colección llamada mycol como:
> use sampleDB switched to db sampleDB > db.createCollection("mycol") { "ok" : 1 } >
E insertó 3 documentos en él usando el método insert () como se muestra a continuación:
> db.mycol.insert([ { title: "MongoDB Overview", description: "MongoDB is no SQL database", by: "Area Tutorial", url: "http://www.AreaTutorial.com", tags: ["mongodb", "database", "NoSQL"], likes: 100 }, { title: "NoSQL Database", description: "NoSQL database doesn't have tables", by: "Area Tutorial", url: "https://areatutorial.com", tags: ["mongodb", "database", "NoSQL"], likes: 20, comments: [ { user:"user1", message: "My first comment", dateCreated: new Date(2013,11,10,2,35), like: 0 } ] } ])
El siguiente método recupera todos los documentos de la colección:
> db.mycol.find() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "MongoDB Overview", "description" : "MongoDB is no SQL database", "by" : "Area Tutorial", "url" : "https://areatutorial.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } { "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "NoSQL Database", "description" : "NoSQL database doesn't have tables", "by" : "Area Tutorial", "url" : "https://areatutorial.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 20, "comments" : [ { "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 } ] } >
Para mostrar los resultados de forma formateada, puede utilizar el método pretty ().
>db.COLLECTION_NAME.find().pretty()
El siguiente ejemplo recupera todos los documentos de una colección denominada mycol y los organiza en un formato fácil de leer.
> db.mycol.find().pretty() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "MongoDB Overview", "description" : "MongoDB is no SQL database", "by" : "Area Tutorial", "url" : "https://areatutorial.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } { "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "NoSQL Database", "description" : "NoSQL database doesn't have tables", "by" : "Area Tutorial", "url" : "https://areatutorial.com", "tags" : [ "mongodb", "database", "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 Encuentra uno () un método que solo devuelve un documento.
>db.COLLECTIONNAME.findOne()
El siguiente ejemplo recupera un documento titulado Descripción general de MongoDB.
> db.mycol.findOne({title: "MongoDB Overview"}) { "_id" : ObjectId("5dd6542170fb13eec3963bf0"), "title" : "MongoDB Overview", "description" : "MongoDB is no SQL database", "by" : "Area Tutorial", "url" : "https://areatutorial.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
Para solicitar un documento en función de alguna condición, puede utilizar las siguientes operaciones.
Operación | Sintaxis | Ejemplo | RDBMS equivalente |
---|---|---|---|
Igualdad | {<ключ>: {$ por ejemplo; <значение>}} | db.mycol.find ({«por»: «punto de aprendizaje»}). bonita () | donde por = ‘punto de aprendizaje’ |
Menos que | {<ключ>: {$ lt: <значение>}} | db.mycol.find ({«me gusta»: {$ lt: 50}}). bonita () | donde me gusta <50 |
Menos que igual | {<ключ>: {$ lte: <значение>}} | db.mycol.find ({«me gusta»: {$ lte: 50}}). bonita () | donde me gusta <= 50 |
Mejor que | {<ключ>: {$ gt: <значение>}} | db.mycol.find ({«me gusta»: {$ gt: 50}}). bonita () | donde me gusta> 50 |
Mayor que igual | {<ключ>: {$ gte: <значение>}} | db.mycol.find ({«me gusta»: {$ gte: 50}}). bonita () | donde me gusta> = 50 |
No es igual | {<ключ>: {$ ne: <значение>}} | db.mycol.find ({«me gusta»: {$ ne: 50}}). bonita () | donde estan los me gusta! = 50 |
Valores de matriz | {<ключ>: {$ en:[<value1>, <value2>,……<valueN>]}} | db.mycol.find ({«nombre»: {$ en:[«Raj», «Ram», «Raghu»]}}). linda () | Donde el nombre coincide con cualquier valor en:[«Raj», «Ram», «Raghu»] |
Valores que no están en una matriz | {<ключ>: {$ nin: <значение>}} | db.mycol.find ({«nombre»: {$ nin:[«Ramu», «Raghav»]}}). linda () | Si los valores de nombre no están en la matriz:[«Ramu», «Raghav»] o no existe en absoluto |
Para consultar documentos basados en una condición AND, debe usar $ y una palabra clave. A continuación se muestra la sintaxis básica del operador AND:
>db.mycol.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] })
El siguiente ejemplo mostrará todos los tutoriales escritos por «punto de aprendizaje» y cuyo título es «Descripción general de MongoDB».
> db.mycol.find({$and:[{"by":"Area Tutorial"},{"title": "MongoDB Overview"}]}).pretty() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "MongoDB Overview", "description" : "MongoDB is no SQL database", "by" : "Area Tutorial", "url" : "https://areatutorial.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } >
Para el ejemplo anterior, el equivalente de la cláusula where sería ‘donde por =’ punto de tutoriales ‘Y título = «Descripción general de MongoDB»‘… Puede pasar cualquier número de pares clave-valor en la cláusula de búsqueda.
Para solicitar documentos basados en una condición de quirófano, debe utilizar $ o palabra clave. A continuación se muestra la sintaxis básica O –
>db.mycol.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
El siguiente ejemplo mostrará todos los tutoriales escritos por «punto de aprendizaje» o cuyo título es «Descripción general de MongoDB».
>db.mycol.find({$or:[{"by":"Area Tutorial"},{"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "Area Tutorial", "url": "https://areatutorial.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
El siguiente ejemplo mostrará documentos que tienen más de 10 Me gusta y el título es «Descripción general de MongoDB» o «Punto de aprendizaje». Cláusula where equivalente a SQL ‘donde me gusta> 10 Y (por =’ punto de tutoriales ‘O título = «Descripción general de MongoDB»)’
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "Area Tutorial"}, {"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "Area Tutorial", "url": "https://areatutorial.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
Para consultar documentos basados en una condición NOT, debe usar la palabra clave $ not. A continuación se muestra la sintaxis básica NO –
>db.COLLECTION_NAME.find( { $not: [ {key1: value1}, {key2:value2} ] } )
Supongamos que insertamos 3 documentos en la colección. empDetails Como se muestra abajo –
db.empDetails.insertMany( [ { First_Name: "Radhika", Last_Name: "Sharma", Age: "26", e_mail: "[email protected]", phone: "9000012345" }, { First_Name: "Rachel", Last_Name: "Christopher", Age: "27", e_mail: "[email protected]", phone: "9000054321" }, { First_Name: "Fathima", Last_Name: "Sheik", Age: "24", e_mail: "[email protected]", phone: "9000054321" } ] )
El siguiente ejemplo extraerá documentos cuyo nombre no sea «Radhika» y el apellido no sea «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 consultar documentos basados en la condición NOT, debe usar la palabra clave $ not, la siguiente es la sintaxis básica NO –
>db.COLLECTION_NAME.find( { $NOT: [ {key1: value1}, {key2:value2} ] } ).pretty()
El siguiente ejemplo extraerá documentos que tienen menos de 25 años.
> db.empDetails.find( { "Age": { $not: { $gt: "25" } } } ) { "_id" : ObjectId("5dd6636870fb13eec3963bf7"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }
🚫