Docs Menu
Docs Home
/ / /
Java Reactive Streams ドライバー

MongoDB へのデータの書込み (write)

項目一覧

  • Overview
  • 1 つを挿入
  • 複数挿入
  • 更新 1
  • 複数更新
  • replaceOne
  • deleteOne
  • 複数削除
  • 一括書き込み (write)

このページには、 MongoDBにデータを書き込むために使用できるJava Reactive Streams ドライバー メソッドのコピー可能なコード例が含まれています。

Tip

このページに記載されているメソッドの詳細については、各セクションに提供されているリンクを参照してください。

このページの例を使用するには、コード例をサンプル アプリケーションまたは独自のアプリケーションにコピーします。 <connection string>など、コード例にあるすべてのプレースホルダーを、MongoDB 配置に関連する値に置き換えてください。

このガイドでは、プロジェクト Reactive ライブラリを使用して、 Java Reactive Streams ドライバー メソッドによって返された Publisher インスタンスを消費します。プロジェクト Reactor ライブラリとその使用方法の詳細については、React ドキュメントの「 使用開始 」を参照してください。

Publisherインスタンスを消費する他の方法もあります。 RxJava などの多くの代替ライブラリの 1 つを使用できます またはPublisher.subscribe() を直接呼び出し、 の独自の実装を渡します。Subscriber

このガイドでは、React のMono.block()メソッドを使用してPublisherをサブスクライブし、 Publisherがターミナル状態に達するまで現在のスレッドをブロックします。 Reactive Streams イベントの詳細については、「 Reactive Streams 」を参照してください。

重要

返された出版社はコールド

Java Reactive Streams ドライバー メソッドによって返されるすべてのPublisherインスタンスはコールドです。つまり、返されたPublisherをサブスクライブしないと、対応する操作は実行されません。 返されたPublisherを 1 回だけサブスクライブすることをお勧めします。複数回サブスクライブするとエラーが発生する可能性があるためです。

次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。

  1. IDE で新しいJavaプロジェクトを作成します。

  2. Java Reactive Streams ドライバーをJavaプロジェクトにインストールします。

  3. Project React ライブラリ をインストール Javaプロジェクト。

  4. 次のコードをコピーし、 WriteOperations.javaという名前の新しいJavaファイルに貼り付けます。

  5. このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。

1import com.mongodb.MongoException;
2import com.mongodb.ConnectionString;
3import com.mongodb.MongoClientSettings;
4import com.mongodb.ServerApi;
5import com.mongodb.ServerApiVersion;
6import com.mongodb.bulk.BulkWriteResult;
7
8import com.mongodb.client.model.DeleteOneModel;
9import com.mongodb.client.model.InsertOneModel;
10import com.mongodb.client.model.ReplaceOneModel;
11import com.mongodb.client.model.UpdateOneModel;
12import com.mongodb.client.model.DeleteOptions;
13import com.mongodb.client.model.InsertManyOptions;
14import com.mongodb.client.model.InsertOneOptions;
15import com.mongodb.client.model.UpdateOptions;
16import com.mongodb.client.model.Updates;
17import com.mongodb.client.result.UpdateResult;
18import com.mongodb.client.result.DeleteResult;
19import com.mongodb.client.result.InsertManyResult;
20import com.mongodb.client.result.InsertOneResult;
21import com.mongodb.reactivestreams.client.MongoCollection;
22
23import org.bson.Document;
24
25import com.mongodb.reactivestreams.client.MongoClient;
26import com.mongodb.reactivestreams.client.MongoClients;
27import com.mongodb.reactivestreams.client.MongoDatabase;
28import reactor.core.publisher.Mono;
29
30import java.util.ArrayList;
31import java.util.Arrays;
32import java.util.List;
33
34import static com.mongodb.client.model.Filters.eq;
35import static com.mongodb.client.model.Updates.set;
36
37class WriteOperations {
38 public static void main(String[] args) throws InterruptedException {
39 // Replace the placeholder with your Atlas connection string
40 String uri = "<connection string>";
41
42 // Construct a ServerApi instance using the ServerApi.builder() method
43 ServerApi serverApi = ServerApi.builder()
44 .version(ServerApiVersion.V1)
45 .build();
46
47 MongoClientSettings settings = MongoClientSettings.builder()
48 .applyConnectionString(new ConnectionString(uri))
49 .serverApi(serverApi)
50 .build();
51
52 // Create a new client and connect to the server
53 try (MongoClient mongoClient = MongoClients.create(settings)) {
54 MongoDatabase database = mongoClient.getDatabase("<database name>");
55 MongoCollection<Document> collection = database.getCollection("<collection name>");
56 // Start example code here
57
58 // End example code here
59 }
60 }
61}
Document document = new Document("<field name>", "<value>");
Publisher<InsertOneResult> insertOnePublisher = collection.insertOne(document);
InsertOneResult result = Mono.from(insertOnePublisher).block();
System.out.printf("Inserted 1 document with ID %s.",
result.getInsertedId());

insertOne()メソッドの詳細については、 ドキュメントの挿入ガイドを参照してください。

Document doc1 = new Document("<field name>", "<value>");
Document doc2 = new Document("<field name>", "<value>");
List<Document> documents = Arrays.asList(doc1, doc2);
Publisher<InsertManyResult> insertManyPublisher = collection.insertMany(documents);
InsertManyResult result = Mono.from(insertManyPublisher).block();
System.out.printf("Inserted documents with IDs %s.",
result.getInsertedIds());

insertMany()メソッドについて詳しくは、ドキュメントの挿入ガイドをご覧ください。

Publisher<UpdateResult> updateOnePublisher = collection.updateOne(
eq("<field name>", "<value>"),
set("<field name>", "<new value>"));
UpdateResult result = Mono.from(updateOnePublisher).block();
System.out.printf("Updated %s document.",
result.getModifiedCount());

updateOne()メソッドについて詳しくは、ドキュメントの更新ガイドを参照してください。

Publisher<UpdateResult> updateManyPublisher = collection.updateMany(
eq("<field name>", "<value>"),
set("<field name>", "<new value>"));
UpdateResult result = Mono.from(updateManyPublisher).block();
System.out.printf("Updated %s documents.",
result.getModifiedCount());

updateMany()メソッドについて詳しくは、ドキュメントの更新ガイドを参照してください。

Publisher<UpdateResult> replaceOnePublisher = collection.replaceOne(
eq("<field name>", "<value>"),
new Document().append("<field name>", "<new value>")
.append("<new field name>", "<new value>"));
UpdateResult result = Mono.from(replaceOnePublisher).block();
System.out.printf("Replaced %s document.",
result.getModifiedCount());

replaceOne()メソッドの詳細については、ドキュメントの置換のガイドを参照してください。

Publisher<DeleteResult> deleteOnePublisher = collection.deleteOne(
eq("<field name>", "<value>"));
DeleteResult result = Mono.from(deleteOnePublisher).block();
System.out.printf("Deleted %s document.", result.getDeletedCount());

deleteOne()メソッドの詳細については、ドキュメントの削除のガイドを参照してください。

Publisher<DeleteResult> deleteManyPublisher = collection.deleteMany(
eq("<field name>", "<value>"));
DeleteResult result = Mono.from(deleteManyPublisher).block();
System.out.printf("Deleted %s documents.", result.getDeletedCount());

deleteMany()メソッドの詳細については、ドキュメントの削除のガイドを参照してください。

Publisher<BulkWriteResult> bulkWritePublisher = collection.bulkWrite(
Arrays.asList(new InsertOneModel<>(
new Document("<field name>", "<value>")),
new InsertOneModel<>(new Document("<field name>", "<value>")),
new UpdateOneModel<>(eq("<field name>", "<value>"),
set("<field name>", "<new value>")),
new DeleteOneModel<>(eq("<field name>", "<value>")),
new ReplaceOneModel<>(eq("<field name>", "<value>"),
new Document("<field name>", "<new value>")
.append("<new field name>", "<new value>"))));
BulkWriteResult bulkResult = Mono.from(bulkWritePublisher).block();
System.out.printf("Modified %s documents and deleted %s documents.",
bulkResult.getModifiedCount(), bulkResult.getDeletedCount());

戻る

データベースとコレクション