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

Consulta de Documento MongoDB

Nesta seção, vamos aprender como consultar documentos em conjuntos do MongoDB.

método find() do MongoDB

Para consultar dados no conjunto do MongoDB, você precisa usar ofind()método.

Gramática

find()A sintaxe básica do método é a seguinte-

> db.COLLECTION_NAME.find()

find() o método exibirá todos os documentos de forma não estruturada.

Exemplo Online

suponha que já tenhamos criado um conjunto chamado mycol-

> usar sampleDB
mudado para db sampleDB
> criar a coleção "mycol"
{ "ok" :}} 1 }
>

e usar o método insert() para inseri-los3um documento, conforme exemplo a seguir-

> db.mycol.insert([
	{
		title: "Visão Geral do MongoDB",
		description: "MongoDB não é um banco de dados SQL",
		by: "Tutorial Básico",
		url: "http://pt.oldtoolbag.com",
		tags: ["mongodb", "database", "NoSQL"],
		likes: 100
	}
	{
		title: "Banco de Dados NoSQL",
		description: "Bancos de dados NoSQL não têm tabelas",
		by: "Tutorial Básico",
		url: "http://pt.oldtoolbag.com",
		tags: ["mongodb", "database", "NoSQL"],
		likes: 20,
		comments: [
			{
				user: "user1",
				message: "Meu primeiro comentário",
				dateCreated: new Date(",2013,11,10,2,35,
				like: 0
			}
		]
	}
])

Os seguintes métodos são usados para pesquisar todos os documentos do conjunto.-

> db.mycol.find()
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "Visão Geral do MongoDB", "description" : "MongoDB não é um banco de dados SQL", "by" : "Tutorial Básico", "url" : "http://pt.oldtoolbag.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "Banco de Dados NoSQL", "description" : "Bancos de dados NoSQL não têm tabelas", "by" : "Tutorial Básico", "url" : "http://pt.oldtoolbag.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 20, "comments" : [ { "user" : "user1", "message" : "Meu primeiro comentário", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 } ]}
>

Método pretty()

Para exibir os resultados formatados, você pode usar o método pretty().

Gramática

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

Exemplo Online

A seguir, um exemplo de como pesquisar todos os documentos de um conjunto chamado mycol e apresentá-los em um formato legível.

> db.mycol.find().pretty()
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title": "MongoDB Visão Geral",
	"description": "MongoDB não é um banco de dados SQL",
	"by": "Tutorial Básico",
	"url": "http://pt.oldtoolbag.com",
	"tags": [
		"mongodb",
		"banco de dados",
		"NoSQL"
	],
	"likes": 100
}
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534d"),
	"title" : "Banco de Dados NoSQL",
	"description": "Banco de dados NoSQL não tem tabelas"
	"by": "Tutorial Básico",
	"url": "http://pt.oldtoolbag.com",
	"tags": [
		"mongodb",
		"banco de dados",
		"NoSQL"
	],
	"likes": 20,
	"comments": [
		{
			"user": "user1",
			"message": "My first comment",
			"dateCreated": ISODate("2013-12-09T21:05:00Z"),
			"like": 0
		}
	]
}

método findOne()

Além do método find(), há outrofindOne()O método retorna apenas um documento.

Gramática

>db.COLLECTIONNAME.findOne()

Exemplo Online

Os seguintes exemplos recuperam documentos com o título MongoDB Overview.

> db.mycol.findOne({title: "MongoDB Overview"})
{
	"_id" : ObjectId("5dd6542170fb13eec3963bf0"),
	"title": "MongoDB Visão Geral",
	"description": "MongoDB não é um banco de dados SQL",
	"by": "Tutorial Básico",
	"url": "http://pt.oldtoolbag.com",
	"tags": [
		"mongodb",
		"banco de dados",
		"NoSQL"
	],
	"likes": 100
}

Comparação da sentença Where do MongoDB com RDBMS

Para consultar documentos com certas condições, você pode usar as seguintes operações.

OperaçãoFormatoExemploSentenças semelhantes em RDBMS
igual{<key>:<value>}db.col.find({"by":"基础教程"}).pretty()where by = '基础教程'
menor{<key>:{$lt:<value>}}db.col.find({"likes":{$lt:50}).pretty()where likes < 50
menor ou igual{<key>:{$lte:<value>}}db.col.find({"likes":{$lte:50}).pretty()where likes <= 50
maior{<key>:{$gt:<value>}}db.col.find({"likes":{$gt:50}).pretty()where likes > 50
maior ou igual{<key>:{$gte:<value>}}db.col.find({"likes":{$gte:50}).pretty()where likes >= 50
não é igual{<key>:{$ne:<value>}}db.col.find({"likes":{$ne:50}).pretty()where likes != 50
Os valores estão no array{<key>:{$in:[<value1>, <value2>,……<valueN>]db.mycol.find({"name":{$in:["Raj", "Ram", "Raghu"]}}).pretty()Onde o nome coincide com qualquer valor dentro :["Raj", "Ram", "Raghu"]
O valor não está na lista{<key>:{$nin:<value>}}db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty()O valor do nome não está na lista :["Ramu", "Raghav"] ou, simplesmente, não existe

Condição AND do MongoDB

Gramática

Para consultar documentos com base na condição "AND", você precisa usar a palavra-chave $and. A seguir está a sintaxe básica do AND-

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

Exemplo

O exemplo a seguir mostrará todos os tutoriais escritos por "Tutorial Básico" e com o título "MongoDB Visão Geral".

> db.mycol.find({$and:[{"by":"Tutorial Básico"},{"title": "MongoDB Visão Geral"}]}).pretty()
{
	"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
	"title": "MongoDB Visão Geral",
	"description": "MongoDB não é um banco de dados SQL",
	"by": "Tutorial Básico",
	"url": "https://pt.oldtoolbag.com",
	"tags": [
		"mongodb",
		"banco de dados",
		"NoSQL"
	],
	"likes": 100
}
>

Para o exemplo fornecido acima, a cláusula where equivalente será' where by = 'Tutorial Básico' AND title = 'MongoDB Visão Geral' '. Você pode passar qualquer quantidade de pares de chave e valor na cláusula find.

Condição OR do MongoDB

Gramática

Para consultar documentos com base na condição "OR", é necessário usar$orpalavra-chave. A seguir estáOUA sintaxe básica:

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

Exemplo

O exemplo a seguir mostrará todos os tutoriais escritos por "tutorials point" ou com o título "MongoDB Visão Geral".

>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Visão Geral"}]}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "MongoDB Visão Geral", 
   "description": "MongoDB não é um banco de dados SQL",
   "by": "基础教程",
   "url": "http://pt.oldtoolbag.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

MongoDB AND e OR juntos

Exemplo Online

O exemplo a seguir mostrará documentos cujos likes são maiores que}}10e o título é "Resumo MongoDB" ou by é "基础教程" dos documentos. Equivalente à cláusula WHERE do SQL "where likes>10 AND (by = '基础教程' OR title = 'Resumo MongoDB')

>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"},
   {"title": "Resumo MongoDB"}).pretty()
{
   "_id": ObjectId(7df78ad8902c),
   "title": "Resumo MongoDB", 
   "description": "MongoDB não é um banco de dados SQL",
   "by": "基础教程",
   "url": "http://pt.oldtoolbag.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "likes": "100"
}
>

Condição NOR MongoDB

Gramática

Para consultar documentos com condições NOR, é necessário usar a palavra-chave $nor. A seguir estáNORA sintaxe básica:

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

Exemplo

Suponha que estejamos na coleção empDetails foi inserido3um documento, conforme exemplo a seguir-

db.empDetails.insertMany(
	[
		{
			First_Name: "Radhika",
			Last_Name: "Sharma",
			Idade: "26",
			e_mail: "[email protected]",
			phone: "9000012345"
		}
		{
			First_Name: "Rachel",
			Last_Name: "Christopher",
			Idade: "27",
			e_mail: "[email protected]",
			phone: "9000054321"
		}
		{
			First_Name: "Fathima",
			Last_Name: "Sheik",
			Idade: "24",
			e_mail: "[email protected]",
			phone: "9000054321"
		}
	]
)

A seguir, este exemplo buscará documentos cujos nomes não são "Radhika" e cujos nomes também não são "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"
}

Condição NOT MongoDB

Gramática

Para consultar documentos com condição NOT, você precisa usar a palavra-chave $not, a seguir}}NOTSintaxe Básica:

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

Exemplo Online

A seguir, um exemplo que buscará documentos com idade não superior a25anos 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"
}