English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Consulta de documentos MongoDB

En este capítulo, aprenderemos a consultar documentos en una colección de MongoDB.

método find() de MongoDB

Para consultar datos en una colección de MongoDB, debe usarfind()Método.

Gramática

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.

Ejemplo en línea

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

Método pretty(),

Para mostrar los resultados en un formato estructurado, se puede utilizar el método pretty().

Gramática

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

Ejemplo en línea

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

método findOne()

Además del método find(), hay otrofindOne()El método solo devuelve un documento.

Gramática

>db.COLLECTIONNAME.findOne()

Ejemplo en línea

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
}

Comparación de la sentencia WHERE de MongoDB con RDBMS

Para consultar documentos según ciertas condiciones, puede usar las siguientes operaciones.

OperaciónFormatoEjemploLa 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

Condiciones AND de MongoDB

Gramática

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

Ejemplo

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.

Condiciones OR de MongoDB

Gramática

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

Ejemplo

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

MongoDB AND y OR se utilizan juntos

Ejemplo en línea

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

Condición NOR de MongoDB

Gramática

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

Ejemplo

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

Condición NOT de MongoDB

Gramática

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

Ejemplo en línea

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