MongoDB - Documento de consulta

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

El método find ()

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

Sintaxis

La sintaxis básica de find() El método es el siguiente:

>db.COLLECTION_NAME.find()

find() El método mostrará todos los documentos de forma no estructurada.

Ejemplo

Supongamos que hemos creado 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: "tutorials point",
		url: "http://www.tutorialspoint.com",
		tags: ["mongodb", "database", "NoSQL"],
		likes: 100
	},
	{
		title: "NoSQL Database",
		description: "NoSQL database doesn't have tables",
		by: "tutorials point",
		url: "http://www.tutorialspoint.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" : "tutorials point", "url" : "http://www.tutorialspoint.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "NoSQL Database", "description" : "NoSQL database doesn't have tables", "by" : "tutorials point", "url" : "http://www.tutorialspoint.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 la 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" : "tutorials point",
	"url" : "http://www.tutorialspoint.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534d"),
	"title" : "NoSQL Database",
	"description" : "NoSQL database doesn't have tables",
	"by" : "tutorials point",
	"url" : "http://www.tutorialspoint.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 findOne ()

Aparte del método find (), hay findOne() método, que devuelve solo un documento.

Sintaxis

>db.COLLECTIONNAME.findOne()

Ejemplo

El siguiente ejemplo recupera el documento con el título Descripción general de MongoDB.

> db.mycol.findOne({title: "MongoDB Overview"})
{
	"_id" : ObjectId("5dd6542170fb13eec3963bf0"),
	"title" : "MongoDB Overview",
	"description" : "MongoDB is no SQL database",
	"by" : "tutorials point",
	"url" : "http://www.tutorialspoint.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}

RDBMS Equivalentes de la cláusula Where en MongoDB

Para consultar el documento sobre la base de alguna condición, puede utilizar las siguientes operaciones.

Operación Sintaxis Ejemplo Equivalente a RDBMS
Igualdad {<clave>: {$ eg; <valor>}} db.mycol.find ({"por": "punto de tutoriales"}). pretty () donde by = 'punto de tutoriales'
Menos que {<clave>: {$ lt: <valor>}} db.mycol.find ({"me gusta": {$ lt: 50}}). pretty () donde me gusta <50
Menor que igual {<clave>: {$ lte: <valor>}} db.mycol.find ({"me gusta": {$ lte: 50}}). pretty () donde me gusta <= 50
Mas grande que {<clave>: {$ gt: <valor>}} db.mycol.find ({"me gusta": {$ gt: 50}}). pretty () donde me gusta> 50
Mayor que igual {<clave>: {$ gte: <valor>}} db.mycol.find ({"me gusta": {$ gte: 50}}). pretty () donde me gusta> = 50
No es igual {<clave>: {$ ne: <valor>}} db.mycol.find ({"me gusta": {$ ne: 50}}). pretty () donde me gusta! = 50
Valores en una matriz {<clave>: {$ en: [<valor1>, <valor2>, …… <valorN>]}} db.mycol.find ({"nombre": {$ in: ["Raj", "Ram", "Raghu"]}}). bonita () Donde el nombre coincide con cualquiera de los valores en: ["Raj", "Ram", "Raghu"]
Valores que no están en una matriz {<clave>: {$ nin: <valor>}} db.mycol.find ({"nombre": {$ nin: ["Ramu", "Raghav"]}}). bonita () Donde 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 la condición AND, debe usar $ y palabra clave. A continuación se muestra la sintaxis básica de AND -

>db.mycol.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] })

Ejemplo

El siguiente ejemplo mostrará todos los tutoriales escritos por 'punto de tutoriales' y cuyo título es 'Descripción general de MongoDB'.

> db.mycol.find({$and:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title" : "MongoDB Overview",
	"description" : "MongoDB is no SQL database",
	"by" : "tutorials point",
	"url" : "http://www.tutorialspoint.com",
	"tags" : [
		"mongodb",
		"database",
		"NoSQL"
	],
	"likes" : 100
}
>

Para el ejemplo anterior, la cláusula where equivalente será ' where by = 'tutorials point' AND title = 'MongoDB Overview' '. Puede pasar cualquier número de pares de clave y valor en la cláusula de búsqueda.

O en MongoDB

Sintaxis

Para consultar documentos basados ​​en la condición OR, debe usar $orpalabra clave. A continuación se muestra la sintaxis básica deOR -

>db.mycol.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

Ejemplo

El siguiente ejemplo mostrará todos los tutoriales escritos por 'punto de tutoriales' o cuyo título es 'Descripción general de MongoDB'.

>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "tutorials point",
   "url": "http://www.tutorialspoint.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

Usando AND y OR juntos

Ejemplo

El siguiente ejemplo mostrará los documentos que tienen gustos superiores a 10 y cuyo título es "Descripción general de MongoDB" o "punto de tutoriales". SQL equivalente donde la cláusula es'where likes>10 AND (by = 'tutorials point' OR title = 'MongoDB Overview')'

>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"},
   {"title": "MongoDB Overview"}]}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "tutorials point",
   "url": "http://www.tutorialspoint.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

NOR en MongoDB

Sintaxis

Para consultar documentos basados ​​en la condición NOT, debe utilizar la palabra clave $ not. A continuación se muestra la sintaxis básica deNOT -

>db.COLLECTION_NAME.find(
	{
		$not: [
			{key1: value1}, {key2:value2}
		]
	}
)

Ejemplo

Supongamos que hemos insertado 3 documentos en la colección. empDetails como se muestra a continuación -

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 recuperará los documentos cuyo nombre no es "Radhika" y el apellido no es "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 de NOT -

>db.COLLECTION_NAME.find(
	{
		$NOT: [
			{key1: value1}, {key2:value2}
		]
	}
).pretty()

Ejemplo

El siguiente ejemplo recuperará los documentos cuya antigüedad no sea superior a 25

> db.empDetails.find( { "Age": { $not: { $gt: "25" } } } )
{
	"_id" : ObjectId("5dd6636870fb13eec3963bf7"),
	"First_Name" : "Fathima",
	"Last_Name" : "Sheik",
	"Age" : "24",
	"e_mail" : "[email protected]",
	"phone" : "9000054321"
}