MongoDB – Documento de consulta

En este capítulo, aprenderemos cómo consultar documentos de la colección MongoDB.

Método Find ()

Para consultar datos de la colección MongoDB, debe usar MongoDB encontrar() método.

Sintaxis

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.

Ejemplo

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

El método pretty ()

Para mostrar los resultados de forma formateada, puede utilizar el método pretty ().

Sintaxis

>db.COLLECTION_NAME.find().pretty()

Ejemplo

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

Método FindOne ()

Además del método find (), hay Encuentra uno () un método que solo devuelve un documento.

Sintaxis

>db.COLLECTIONNAME.findOne()

Ejemplo

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
}

RDBMS equivalente a cláusulas en MongoDB

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

Y en MongoDB

Sintaxis

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>} ] })

Ejemplo

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.

O en MongoDB

Sintaxis

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()

Ejemplo

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

Usando AND y OR juntos

Ejemplo

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

NOR en MongoDB

Sintaxis

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}
		]
	}
)

Ejemplo

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

NO en MongoDB

Sintaxis

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()

Ejemplo

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

🚫