English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nesta seção, vamos aprender como consultar documentos em conjuntos do MongoDB.
Para consultar dados no conjunto do MongoDB, você precisa usar ofind()método.
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.
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 } ]} >
Para exibir os resultados formatados, você pode usar o método pretty().
> db.COLLECTION_NAME.find().pretty()
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 } ] }
Além do método find(), há outrofindOne()O método retorna apenas um documento.
>db.COLLECTIONNAME.findOne()
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 }
Para consultar documentos com certas condições, você pode usar as seguintes operações.
Operação | Formato | Exemplo | Sentenç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 |
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> } ] )
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.
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()
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" } >
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" } >
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} ] } )
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" }
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()
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" }