Menu Docs
Página inicial do Docs
/
Começar com Guias

Ler dados do MongoDB com queries

No guia anterior, Ler dados no MongoDB, você recuperou todos os documentos da collection sample_guides.planets sem especificar nenhum critério que os documentos deveriam atender.

Neste guia, você consultará a coleta e recuperará documentos que correspondam a critérios de igualdade específicos, o que significa que os valores do campo ou campos especificados devem corresponder.

Tempo necessário: 15 minutos

1

Dica

Neste bloco de código, há um comentário para substituir a URI da conexão pela sua. Substitua a string URI pela sua própria connection string do Atlas.

Dica

Veja a seguir um esboço com o código mínimo necessário para se conectar ao MongoDB. Você fará adições nas próximas etapas para ler os dados.

Na linha 5, substitua a string URI por sua própria connection string Atlas.

CrudRead.cs
1using MongoDB.Bson;
2using MongoDB.Driver;
3
4// Replace the uri string with your MongoDB deployment's connection string.
5var uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
6
7var client = new MongoClient(uri);
8
9// database and collection code goes here
10// find code goes here
11// iterate code goes here
12
13
14

Dica

Veja a seguir um esboço com o código mínimo necessário para se conectar ao MongoDB. Você fará adições nas próximas etapas para ler os dados.

Na linha 11, substitua a string URI por sua própria string de conexão Atlas .

crudRead.go
1package main
2
3import (
4 "context"
5
6 "go.mongodb.org/mongo-driver/mongo"
7 "go.mongodb.org/mongo-driver/mongo/options"
8)
9
10func main() {
11 uri := "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"
12
13 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
14 if err != nil {
15 panic(err)
16 }
17
18 defer func() {
19 if err = client.Disconnect(context.TODO()); err != nil {
20 panic(err)
21 }
22 }()
23
24 // database and colletion code goes here
25 // find code goes here
26 // iterate code goes here
27}

Dica

Veja a seguir um esboço com o código mínimo necessário para se conectar ao MongoDB. Você fará adições nas próximas etapas para ler os dados.

Na linha 8, substitua a string URI por sua própria string de conexão Atlas .

CrudRead.java
1import com.mongodb.client.*;
2import com.mongodb.client.model.Filters.*;
3import org.bson.Document;
4import org.bson.conversions.Bson;
5
6public class CrudRead {
7 public static void main(String[] args) {
8 String uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
9
10 try (MongoClient mongoClient = MongoClients.create(uri)) {
11 // database and collection code goes here
12 // find code goes here
13 // iterate code goes here
14 }
15 }
16}

Dica

Veja a seguir um esboço com o código mínimo necessário para se conectar ao MongoDB. Você fará adições nas próximas etapas para ler os dados.

Na linha 4, substitua a string URI pela sua própria connection string do Atlas.

crud-read.js
1const { MongoClient } = require("mongodb");
2// Replace the uri string with your MongoDB deployment's connection string.
3const uri =
4 "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
5const client = new MongoClient(uri);
6async function run() {
7 try {
8 await client.connect();
9 // database and collection code goes here
10 // find code goes here
11 // iterate code goes here
12 } finally {
13 // Ensures that the client will close when you finish/error
14 await client.close();
15 }
16}
17run().catch(console.dir);

Dica

Veja a seguir um esboço com o código mínimo necessário para se conectar ao MongoDB. Você fará adições nas próximas etapas para ler os dados.

Na linha 4, substitua a string URI pela sua própria connection string do Atlas.

crud_read.py
1from pymongo import MongoClient
2
3# Replace the uri string with your MongoDB deployment's connection string.
4uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"
5
6client = MongoClient(uri)
7
8# database and collection code goes here
9# find code goes here
10# iterate code goes here
11
12# Close the connection to MongoDB when you're done.
13client.close()

Dica

MongoDB+srv

Certifique-se de ter instalado o PyMongo com a opção srv.

python3 -m pip install "pymongo[srv]"
2

Mude para o banco de dados e a coleta que você deseja consultar. Nesse caso, você usará o banco de dados sample_guides e a coleta planets.

CrudRead.cs
// database and collection code goes here
var db = client.GetDatabase("sample_guides");
var coll = db.GetCollection<BsonDocument>("planets");
crudRead.go
1// database and colletion code goes here
2db := client.Database("sample_guides")
3coll := db.Collection("planets")
CrudRead.java
1// database and collection code goes here
2MongoDatabase db = mongoClient.getDatabase("sample_guides");
3MongoCollection<Document> coll = db.getCollection("planets");
crud-read.js
// database and collection code goes here
const db = client.db("sample_guides");
const coll = db.collection("planets");
crud_read.py
# database and collection code goes here
db = client.sample_guides
coll = db.planets
3

Você pode recuperar documentos específicos de uma coleta aplicando um filtro de consulta. Um filtro de consulta é um documento que contém os critérios que você está procurando. O exemplo seguinte ilustra utilizando um filtro de consulta para recuperar documentos da coleta planets que têm um campo hasRings com um valor de true.

CrudRead.cs
// find code goes here
var cursor = from planet in coll.AsQueryable()
where planet["hasRings"] == true
select planet;

Dica

BSON.D deve ser usado ao enviar documentos para o MongoDB, porque BSON.D é pedido. Isso é importante em operações mais complexas.

crudRead.go
1// find code goes here
2filter := bson.D{{"hasRings", true}}
3cursor, err := coll.Find(context.TODO(), filter)
4if err != nil {
5 panic(err)
6}

O driver Java do MongoDB inclui construtores que simplificam o processo de criação de query (e outras operações). Aqui, você usa o construtor Filters.eq para construir o documento de query.

CrudRead.java
1// find code goes here
2Bson filter = eq("hasRings", true);
3MongoCursor<Document> cursor = coll.find(filter).iterator();
crud-read.js
// find code goes here
const cursor = coll.find({ hasRings: true });
crud_read.py
# find code goes here
cursor = coll.find({"hasRings": True})
4
CrudRead.cs
// iterate code goes here
foreach (var document in cursor.ToEnumerable())
{
Console.WriteLine(document);
}
crudRead.go
1// iterate code goes here
2for cursor.Next(context.TODO()) {
3 var result bson.M
4 if err := cursor.Decode(&result); err != nil {
5 panic(err)
6 }
7 fmt.Println(result)
8}
9if err := cursor.Err(); err != nil {
10 panic(err)
11}
CrudRead.java
1// iterate code goes here
2try {
3 while (cursor.hasNext()) {
4 System.out.println(cursor.next().toJson());
5 }
6} finally {
7 cursor.close();
8}

Itere os resultados e imprima-os no console. Operações como essa são asychronous no driver Node.js do MongoDB por padrão, o que significa que o tempo de execução do Node.js não bloqueia outras operações enquanto espera que elas terminem a execução.

Para simplificar a operação, você especifica a palavra-chave await, que fará com que o tempo de execução aguarde a operação. Isso geralmente é mais fácil do que especificar uma chamada de resposta, ou encadear uma promessa.

Para obter mais informações, consulte o guia Promise and Callbacks.

crud-read.js
// iterate code goes here
await cursor.forEach(console.log);
crud_read.py
# iterate code goes here
for doc in cursor:
print(doc)
5

Aqui está o código completo seguido de saída de amostra.

Observação

Seus valores ObjectId serão diferentes daqueles mostrados.

Aqui está o código completo seguido de saída de amostra.

CrudRead.cs
1using MongoDB.Bson;
2using MongoDB.Driver;
3
4// Replace the uri string with your MongoDB deployment's connection string.
5var uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
6
7var client = new MongoClient(uri);
8
9// database and collection code goes here
10var db = client.GetDatabase("sample_guides");
11var coll = db.GetCollection<BsonDocument>("planets");
12// find code goes here
13var cursor = from planet in coll.AsQueryable()
14 where planet["hasRings"] == true
15 select planet;
16// iterate code goes here
17foreach (var document in cursor)
18{
19 Console.WriteLine(document);
20}
21
22
{... 'name': 'Uranus', 'hasRings': True, ...}
{... 'name': 'Neptune', 'hasRings': True, ... }
{... 'name': 'Jupiter', 'hasRings': True, ... }
{... 'name': 'Saturn', 'hasRings': True, ... }

Veja o código completo, seguido pela amostra de saída. Os documentos de saída foram truncados aqui para fins de exibição.

crudRead.go
1package main
2
3import (
4 "context"
5 "fmt"
6
7 "go.mongodb.org/mongo-driver/bson"
8 "go.mongodb.org/mongo-driver/mongo"
9 "go.mongodb.org/mongo-driver/mongo/options"
10)
11
12func main() {
13 uri := "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"
14
15 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
16 if err != nil {
17 panic(err)
18 }
19
20 defer func() {
21 if err = client.Disconnect(context.TODO()); err != nil {
22 panic(err)
23 }
24 }()
25
26 // database and colletion code goes here
27 db := client.Database("sample_guides")
28 coll := db.Collection("planets")
29
30 // find code goes here
31 filter := bson.D{{"hasRings", true}}
32 cursor, err := coll.Find(context.TODO(), filter)
33 if err != nil {
34 panic(err)
35 }
36
37 // iterate code goes here
38 for cursor.Next(context.TODO()) {
39 var result bson.M
40 if err := cursor.Decode(&result); err != nil {
41 panic(err)
42 }
43 fmt.Println(result)
44 }
45 if err := cursor.Err(); err != nil {
46 panic(err)
47 }
48
49}
map[... hasRings:true name:Uranus ... ]]
map[... hasRings:true name:Neptune ... ]]
map[... hasRings:true name:Jupiter ... ]]
map[... hasRings:true name:Saturn ... ]]

Aqui está o código completo seguido de saída de amostra.

CrudRead.java
1import com.mongodb.client.*;
2import com.mongodb.client.model.Filters.*;
3import org.bson.Document;
4import org.bson.conversions.Bson;
5
6public class CrudRead {
7 public static void main(String[] args) {
8 String uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
9
10 try (MongoClient mongoClient = MongoClients.create(uri)) {
11 // database and collection code goes here
12 MongoDatabase db = mongoClient.getDatabase("sample_guides");
13 MongoCollection<Document> coll = db.getCollection("planets");
14
15 // find code goes here
16 Bson filter = eq("hasRings", true);
17 MongoCursor<Document> cursor = coll.find(filter).iterator();
18
19 // iterate code goes here
20 try {
21 while (cursor.hasNext()) {
22 System.out.println(cursor.next().toJson());
23 }
24 } finally {
25 cursor.close();
26 }
27 }
28 }
29}
{... 'name': 'Uranus', 'hasRings': True, ...}
{... 'name': 'Neptune', 'hasRings': True, ... }
{... 'name': 'Jupiter', 'hasRings': True, ... }
{... 'name': 'Saturn', 'hasRings': True, ... }

Aqui está o código completo seguido de saída de amostra.

crud-read.js
1const { MongoClient } = require("mongodb");
2// Replace the uri string with your MongoDB deployment's connection string.
3const uri =
4 "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority";
5const client = new MongoClient(uri);
6async function run() {
7 try {
8 await client.connect();
9 // database and collection code goes here
10 const db = client.db("sample_guides");
11 const coll = db.collection("planets");
12
13 // find code goes here
14 const cursor = coll.find({ hasRings: true });
15
16 // iterate code goes here
17 await cursor.forEach(console.log);
18 } finally {
19 // Ensures that the client will close when you finish/error
20 await client.close();
21 }
22}
23run().catch(console.dir);
{... 'name': 'Uranus', 'hasRings': True, ...}
{... 'name': 'Neptune', 'hasRings': True, ... }
{... 'name': 'Jupiter', 'hasRings': True, ... }
{... 'name': 'Saturn', 'hasRings': True, ... }

Aqui está o código completo seguido de saída de amostra.

crud_read.py
1from pymongo import MongoClient
2
3# Replace the uri string with your MongoDB deployment's connection string.
4uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"
5
6client = MongoClient(uri)
7
8# database and collection code goes here
9db = client.sample_guides
10coll = db.planets
11# find code goes here
12cursor = coll.find({"hasRings": True})
13# iterate code goes here
14for doc in cursor:
15 print(doc)
16
17# Close the connection to MongoDB when you're done.
18client.close()
{... 'name': 'Uranus', 'hasRings': True, ...}
{... 'name': 'Neptune', 'hasRings': True, ... }
{... 'name': 'Jupiter', 'hasRings': True, ... }
{... 'name': 'Saturn', 'hasRings': True, ... }
6

Você também pode consultar a collection usando vários critérios. O exemplo a seguir ilustra o uso de vários critérios para recuperar documentos da collection planets que tem um campo hasRings com um valor de false e Argon(Ar) como uma entrada no campo mainAtmosphere.

Aqui está o código completo seguido de saída de amostra.

CrudRead.cs
1// find code goes here
2var cursor = from planet in coll.AsQueryable()
3 where planet["hasRings"] == false
4 where planet["mainAtmosphere"] == "Ar"
5 select planet;
{..., "name" : "Mars", "mainAtmosphere" : ["CO2", "Ar", "N"], ... }
{..., "name" : "Earth", "mainAtmosphere" : ["N", "O2", "Ar"], ... }

Veja o código completo, seguido pela amostra de saída. Os documentos de saída foram truncados aqui para fins de exibição.

crudRead.go
1// find code goes here
2filter := bson.D{
3 {"$and",
4 bson.A{
5 bson.D{{"hasRings", false}},
6 bson.D{{"mainAtmosphere", "Ar"}},
7 },
8 },
9}
10cursor, err := coll.Find(context.TODO(), filter)
11if err != nil {
12 panic(err)
13}
map[... hasRings:false mainAtmosphere:[CO2 Ar N] ... ]]
map[... hasRings:false mainAtmosphere:[N O2 Ar] ... ]]

Aqui está o código completo seguido de saída de amostra.

CrudRead.java
1// find code goes here
2Bson filter = and(eq("hasRings", false), eq("mainAtmosphere", "Ar"));
3MongoCursor<Document> cursor = coll.find(filter).iterator();
{..., "name" : "Mars", "mainAtmosphere" : ["CO2", "Ar", "N"], ... }
{..., "name" : "Earth", "mainAtmosphere" : ["N", "O2", "Ar"], ... }

Aqui está o código completo seguido de saída de amostra.

crud-read.js
1// find code goes here
2const cursor = coll.find({ hasRings: false, mainAtmosphere: "Ar" });
{..., "name" : "Mars", "mainAtmosphere" : ["CO2", "Ar", "N"], ... }
{..., "name" : "Earth", "mainAtmosphere" : ["N", "O2", "Ar"], ... }
crud_read.py
1# find code goes here
2cursor = coll.find({"hasRings": False, "mainAtmosphere": "Ar"})
{..., "name" : "Mars", "mainAtmosphere" : ["CO2", "Ar", "N"], ... }
{..., "name" : "Earth", "mainAtmosphere" : ["N", "O2", "Ar"], ... }

Mesmo que o campo mainAtmosphere seja uma matriz, você pode usar uma consulta de igualdade estrita porque o MongoDB trata matrizes como tipos de primeira classe. Durante a execução da consulta, o MongoDB comparou cada entrada na matriz com o valor que você especificou, neste caso "Ar", para determinar se os documentos correspondiam aos seus critérios.

Se você concluiu este guia, recuperou dados do MongoDB usando critérios de igualdade específicos. Isso é útil quando você sabe exatamente o que está procurando, por exemplo, um número de item, um nome de usuário ou um elemento químico.

No próximo guia, você aprenderá como ler dados do MongoDB usando operadores de comparação para recuperar documentos que correspondam a um conjunto mais amplo de critérios.

Consulte os seguintes recursos para obter informações mais detalhadas sobre os conceitos apresentados aqui:

Qual é o próximo
Ler dados usando operadores e queries compostas
20 minutos

Use operadores e consultas compostas para recuperar documentos no MongoDB.

Guia de início
Capítulo 2
CRUD
  • Adicionar um Driver MongoDB
  • Ler dados no MongoDB
  • Ler dados do MongoDB com queries
  • Ler dados usando operadores e queries compostas
  • Inserir dados no MongoDB
  • Atualizar dados no MongoDB
  • Excluir dados do MongoDB