MongoDB でのデータのアップデート
Overview
このガイドでは、ドキュメント内のフィールドをアップデートします。
所要時間: 10 分
必要なもの
stringMongoDB配置への 接続 。
データの挿入 からMongoDB に挿入されたデータ。
手順
MongoDB インスタンスに接続します。
コレクションのドキュメントに似たクラスを作成します。
次のクラスは、ドキュメントに含まれるすべてのフィールド名とタイプをリストします。
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 }
クラスをドキュメント フィールドに自動マッピングします。
C# では、フィールドを慣例的に大文字のクラス プロパティにマッピングします。ただし、キャメルケース フィールドを使用してデータを挿入する必要があります。Tドライバがフィールドを大文字からキャメル文字に自動的に変換するようにするには、 ConventionPack
を作成して、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);
接続コードを確認します。
Tip
以下は、MongoDB に接続するために最低限必要なコードの概要です。データの挿入に必要なコードを追加する手順が続きます。
5 行目で、URI 文字列を独自の 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 }
Tip
以下は、MongoDB に接続するために最低限必要なコードの概要です。データの挿入に必要なコードを追加する手順が続きます。
13 行目の URI 文字列を独自の 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 }
Tip
以下は、MongoDB に接続するために最低限必要なコードの概要です。データの挿入に必要なコードを追加する手順が続きます。
14 行目の URI 文字列を独自の 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 }
Tip
以下は、MongoDB に接続するために最低限必要なコードの概要です。データの挿入に必要なコードを追加する手順が続きます。
4 行目で、URI 文字列を独自の 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);
Tip
以下は、MongoDB に接続するために最低限必要なコードの概要です。データの挿入に必要なコードを追加する手順が続きます。
4 行目で、URI 文字列を独自の 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()
Tip
mongodb+srv
srv
オプションを選択した状態で、PyMongo をインストールしておきます。
python3 -m pip install "pymongo[srv]"
データベースとコレクションを取得します。
操作するデータベースとコレクションに切り替えます。 この場合は、 sample_guides
データベースと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
comets
コレクション内のすべてのドキュメントを更新します。
前のガイドでは、ドキュメントをcomets
コレクションに挿入しました。 現在、それらのドキュメントを更新するための要件があります。 すべてのフィールドはメトリクス単位で表示されますが、 radius
はいずれもメートル単位で表示されます。
次の例では、アップデート ドキュメントを使用して、すべてのドキュメントのradius
フィールドを メトリクス システムからインバウンド システムに変換します。
Tip
変換
1 マイル = 1.60934 キロ
MongoDB C# ドライバーには ビルダ が含まれます クエリやその他の操作の作成プロセスを簡素化します。Filter.Empty
ここでは、Update.Mul
ビルダと ビルダを使用してクエリ ドキュメントを構築し、ドキュメントをアップデートします。
// 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 }
MongoDB Java ドライバーには、クエリ(およびその他の操作)の作成プロセスを簡素化するビルダが含まれます。 Filters.empty
ここでは、Updates.mul
ビルダと ビルダを使用してクエリ ドキュメントを構築します。
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)
結果を表示します。
MongoDB の多くの書込み操作は、操作に関する情報を含む結果オブジェクトを返します。
更新操作では、結果オブジェクトには、ドライバーが正常に更新されたドキュメントの変更された数が含まれます。 ここでは、このプロパティにアクセスして出力します。
// 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)
結果を確認します。
完全なコードとサンプル出力は次のとおりです。
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
概要
このガイドを読み終えたら、MongoDB のデータを更新したことになります。
次のガイドでは、MongoDB からドキュメントを削除します。
その他の参照
ここで紹介した概念に関する詳しい情報については、次のリソースを参照してください。
MongoDB C# ドライバー ドキュメント
The MongoDB Go ドライバーのドキュメンテーション
The MongoDB Java (Sync) ドライバーのドキュメント
The MongoDB Node.js ドライバーのドキュメンテーション