Atualizar dados no MongoDB
Visão geral
Neste guia, você atualizará um campo em um documento.
Tempo necessário: 10 minutos
O que você precisa
Umastring de conexão para sua implantação do MongoDB .
Exemplos de conjuntos de dados carregados em seu cluster.
Dados inseridos de Inserir dados no MongoDB.
Procedimento
Conecte-se à sua instância do MongoDB.
Crie uma classe que se assemelhe a um documento da sua collection.
A classe a seguir lista todos os nomes e tipos de campo que seu documento terá.
1 // class that maps to the fields of a document in the sample_guides.comets collection
2 class Comet {
3 public ObjectId Id { get; set; }
4 public string Name { get; set; }
5 public string OfficialName { get; set; }
6 public double OrbitalPeriod { get; set; }
7 public double Radius { get; set; }
8 public double Mass { get; set; }
9 }
Automatize sua classe para os campos dos documentos.
Em C#, você mapeia campos para propriedades de classe , que são maiúsculas por convenção. No entanto, você deve inserir os dados com campos de camel case. Para fazer com que o driver converta automaticamente os campos de maiúsculas para camel case, crie um ConventionPack
e registre a convenção de nomenclatura para CamelCase
.
1 // instruct the driver to camelCase the fields in MongoDB 2 var pack = new ConventionPack { new CamelCaseElementNameConvention() }; 3 ConventionRegistry.Register("elementNameConvention", pack, x => true);
Verifique seu código de conexão.
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 inserir dados.
Na linha 5, substitua a string URI por sua própria connection string Atlas.
1 using MongoDB.Bson; 2 using MongoDB.Driver; 3 4 // Replace the uri string with your MongoDB deployment's connection string. 5 var uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 6 7 // instruct the driver to camelCase the fields in MongoDB 8 var pack = new ConventionPack { new CamelCaseElementNameConvention() }; 9 ConventionRegistry.Register("elementNameConvention", pack, x => true); 10 11 var client = new MongoClient(uri); 12 13 // database and collection code goes here 14 // update code goes here 15 // amount updated code goes here 16 17 // class that maps to the fields of a document in the sample_guides.comets collection 18 class Comet 19 { 20 public ObjectId Id { get; set; } 21 public string Name { get; set; } 22 public string OfficialName { get; set; } 23 public double OrbitalPeriod { get; set; } 24 public double Radius { get; set; } 25 public double Mass { get; set; } 26 }
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 inserir dados.
Na linha 13, substitua a string URI por sua própria string de conexão Atlas .
1 package main 2 3 import ( 4 "context" 5 "log" 6 "os" 7 8 "go.mongodb.org/mongo-driver/mongo" 9 "go.mongodb.org/mongo-driver/mongo/options" 10 ) 11 12 func 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 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) 21 if err != nil { 22 panic(err) 23 } 24 defer func() { 25 if err = client.Disconnect(context.TODO()); err != nil { 26 panic(err) 27 } 28 }() 29 30 // database and colletion code goes here 31 // update code goes here 32 // amount update code goes here 33 }
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 inserir dados.
Na linha 14, substitua a string URI por sua própria string de conexão Atlas .
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 import com.mongodb.client.result.UpdateResult; 6 import com.mongodb.client.model.Filters; 7 import com.mongodb.client.model.Updates; 8 9 import org.bson.Document; 10 import org.bson.conversions.Bson; 11 12 public class CrudUpdate { 13 public static void main(String[] args) { 14 String uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 15 16 try (MongoClient mongoClient = MongoClients.create(uri)) { 17 // database and collection code goes here 18 // update code goes here 19 // amount updated code goes here 20 } 21 } 22 }
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 inserir dados.
Na linha 4, substitua a string URI pela sua própria connection string do Atlas.
1 const { MongoClient } = require("mongodb"); 2 // Replace the uri string with your MongoDB deployment's connection string. 3 const uri = 4 "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 5 6 const client = new MongoClient(uri); 7 8 async function run() { 9 try { 10 await client.connect(); 11 // database and collection code goes here 12 // update code goes here 13 // amount deleted code goes here 14 } finally { 15 // Ensures that the client will close when you finish/error 16 await client.close(); 17 } 18 } 19 run().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 inserir dados.
Na linha 4, substitua a string URI pela sua própria connection string do Atlas.
1 from pymongo import MongoClient 2 3 # Replace the uri string with your MongoDB deployment's connection string. 4 uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority" 5 6 client = MongoClient(uri) 7 8 # database and collection code goes here 9 # update code goes here 10 # amount updated code goes here 11 12 # Close the connection to MongoDB when you're done. 13 client.close()
Dica
MongoDB+srv
Certifique-se de ter instalado o PyMongo com a opção srv
.
python3 -m pip install "pymongo[srv]"
Obtenha o banco de dados e a collection.
Mude para o banco de dados e a coleção com a qual você deseja trabalhar. Neste caso, você usará o banco de dados sample_guides
e a coleção comets
.
// database and collection code goes here
var db = client.GetDatabase("sample_guides");
var coll = db.GetCollection<Comet>("comets");
1 // database and colletion code goes here 2 db := client.Database("sample_guides") 3 coll := db.Collection("comets")
1 // database and collection code goes here 2 MongoDatabase db = mongoClient.getDatabase("sample_guides"); 3 MongoCollection<Document> coll = db.getCollection("comets");
// database and collection code goes here const db = client.db("sample_guides"); const coll = db.collection("comets");
# database and collection code goes here db = client.sample_guides coll = db.comets
Atualize todos os documentos na comets
coleção.
No guia anterior, você inseriu documentos na coleção comets
. Agora você tem um requisito para atualizar esses documentos. Todos os campos estão em unidades métricas, exceto radius
, que está em imperial.
O exemplo a seguir usa um documento de atualização para converter o campo radius
do sistema de métrica para o sistema imperial em todos os documentos.
Dica
Conversão
1 milha = 1.60934 quilômetros
O driver MongoDB C# inclui construtores que simplificam o processo de criação de queries e outras operações. Aqui, você usa os construtores Filter.Empty
e Update.Mul
para construir o documento de query e atualizá - lo.
// update code goes here var filter = Builders<Comet>.Filter.Empty; var update = Builders<Comet>.Update.Mul("radius", 1.60934); var result = coll.UpdateMany(filter, update);
1 // database and colletion code goes here 2 db := client.Database("sample_guides") 3 coll := db.Collection("comets") 4 5 // update code goes here 6 filter := bson.D{{}} 7 update := bson.D{{"$mul", bson.D{{"radius", 1.60934}}}} 8 9 result, err := coll.UpdateMany(context.TODO(), filter, update) 10 if err != nil { 11 panic(err) 12 }
O driver Java do MongoDB inclui construtores que simplificam o processo de criação de query (e outras operações). Aqui, você usa os construtores Filters.empty
e Updates.mul
para construir o documento de query.
1 // update code goes here 2 Bson filter = Filters.empty(); 3 Bson update = Updates.mul("radius", 1.60934); 4 UpdateResult result = coll.updateMany(filter, update);
// update code goes here const filter = { }; const updateDoc = { $mul: { radius: 1.60934 } }; const result = await coll.updateMany(filter, updateDoc);
# update code goes here doc = { '$mul': {'radius': 1.60934} } result = coll.update_many({}, doc)
Exiba seus resultados.
Muitas operações de escrita no MongoDB retornam um objeto de resultado que contém informações sobre a operação.
Para operações de atualização, o objeto resultante conterá a contagem modificada de documentos que o driver atualizou com êxito. Aqui, você acessa esta propriedade e a imprime.
// display the results of your operation Console.WriteLine($"Number of documents updated: {result.ModifiedCount}");
1 // display the results of your operation 2 fmt.Printf("Number of documents updated: %d", result.ModifiedCount)
1 // display the results of your operation 2 System.out.println("Number of documents updated: " + result.getModifiedCount());
// display the results of your operation console.log("Number of documents updated: " + result.modifiedCount);
# display the results of your operation print("Number of documents updated: ", result.modified_count)
Verifique seus resultados.
Aqui está o código completo seguido de saída de amostra.
1 using MongoDB.Bson; 2 using MongoDB.Driver; 3 using MongoDB.Bson.Serialization.Conventions; 4 5 // Replace the uri string with your MongoDB deployment's connection string. 6 var uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 7 8 // instruct the driver to camelCase the fields in MongoDB 9 var pack = new ConventionPack { new CamelCaseElementNameConvention() }; 10 ConventionRegistry.Register("elementNameConvention", pack, x => true); 11 12 var client = new MongoClient(uri); 13 14 // database and collection code goes here 15 var db = client.GetDatabase("sample_guides"); 16 var coll = db.GetCollection<Comet>("comets"); 17 18 // update code goes here 19 var filter = Builders<Comet>.Filter.Empty; 20 var update = Builders<Comet>.Update.Mul("radius", 1.60934); 21 var result = coll.UpdateMany(filter, update); 22 23 // display the results of your operation 24 Console.WriteLine($"Number of documents updated: {result.ModifiedCount}"); 25 26 // class that maps to the fields of a document in the sample_guides.comets collection 27 class Comet 28 { 29 public ObjectId Id { get; set; } 30 public string Name { get; set; } 31 public string OfficialName { get; set; } 32 public double OrbitalPeriod { get; set; } 33 public double Radius { get; set; } 34 public double Mass { get; set; } 35 }
Number of documents updated: 3
1 package main 2 3 import ( 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 12 func 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("comets") 29 30 // update code goes here 31 filter := bson.D{{}} 32 update := bson.D{{"$mul", bson.D{{"radius", 1.60934}}}} 33 34 result, err := coll.UpdateMany(context.TODO(), filter, update) 35 if err != nil { 36 panic(err) 37 } 38 39 // display the results of your operation 40 fmt.Printf("Number of documents updated: %d", result.ModifiedCount) 41 }
Number of documents updated: 3
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 import com.mongodb.client.result.UpdateResult; 6 import com.mongodb.client.model.Filters; 7 import com.mongodb.client.model.Updates; 8 9 import org.bson.Document; 10 import org.bson.conversions.Bson; 11 12 public class CrudUpdate { 13 public static void main(String[] args) { 14 String uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 15 16 try (MongoClient mongoClient = MongoClients.create(uri)) { 17 // database and collection code goes here 18 MongoDatabase db = mongoClient.getDatabase("sample_guides"); 19 MongoCollection<Document> coll = db.getCollection("comets"); 20 21 // update code goes here 22 Bson filter = Filters.empty(); 23 Bson update = Updates.mul("radius", 1.60934); 24 UpdateResult result = coll.updateMany(filter, update); 25 26 // display the results of your operation 27 System.out.println("Number of documents updated: " + result.getModifiedCount()); 28 } 29 } 30 }
Number of documents updated: 3
1 const { MongoClient } = require("mongodb"); 2 3 // Replace the uri string with your MongoDB deployment's connection string. 4 const uri = 5 "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority"; 6 7 const client = new MongoClient(uri); 8 9 async function run() { 10 try { 11 await client.connect(); 12 // database and collection code goes here 13 const db = client.db("sample_guides"); 14 const coll = db.collection("comets"); 15 16 // update code goes here 17 const filter = {}; 18 const updateDoc = { 19 $mul: { 20 radius: 1.60934, 21 }, 22 }; 23 24 const result = await coll.updateMany(filter, updateDoc); 25 26 // display the results of your operation 27 console.log("Number of documents updated: " + result.modifiedCount); 28 } finally { 29 // Ensures that the client will close when you finish/error 30 await client.close(); 31 } 32 } 33 run().catch(console.dir);
Number of documents updated: 3
1 from pymongo import MongoClient 2 3 # Replace the uri string with your MongoDB deployment's connection string. 4 uri = "mongodb+srv://<user>:<password>@<cluster-url>?retryWrites=true&writeConcern=majority" 5 6 client = MongoClient(uri) 7 8 # database and collection code goes here 9 db = client.sample_guides 10 coll = db.comets 11 12 # update code goes here 13 doc = {"$mul": {"radius": 1.60934}} 14 result = coll.update_many({}, doc) 15 16 # display the results of your operation 17 print("Number of documents updated: ", result.modified_count) 18 19 # Close the connection to MongoDB when you're done. 20 client.close()
Number of documents updated: 3
Resumo
Se você concluiu este guia, atualizou os dados no MongoDB.
No próximo guia, você excluirá documentos do MongoDB.
Veja também
Consulte os seguintes recursos para obter informações mais detalhadas sobre os conceitos apresentados aqui:
A documentação do driver MongoDB C#
A documentação do driver Go do MongoDB
A documentação do driver MongoDB Java (Sync)
Documentação do driver Node.js do MongoDB
Especifique quais documentos devem ser excluídos do MongoDB.