Skip to content

Commit 24b9168

Browse files
committed
readd
1 parent afb49e7 commit 24b9168

File tree

1 file changed

+257
-0
lines changed

1 file changed

+257
-0
lines changed
Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
package docs;
2+
3+
import com.mongodb.client.MongoClient;
4+
import com.mongodb.client.MongoClients;
5+
import com.mongodb.client.MongoCollection;
6+
import com.mongodb.client.MongoDatabase;
7+
import com.mongodb.client.model.InsertOneModel;
8+
import com.mongodb.client.model.UpdateOneModel;
9+
import com.mongodb.client.model.ReplaceOneModel;
10+
import com.mongodb.client.model.BulkWriteOptions;
11+
import com.mongodb.client.model.DeleteOneModel;
12+
import com.mongodb.client.model.DeleteManyModel;
13+
14+
import com.mongodb.MongoBulkWriteException;
15+
16+
import org.bson.Document;
17+
18+
import java.util.*;
19+
20+
import com.mongodb.client.model.Filters;
21+
import com.mongodb.client.model.Updates;
22+
import com.mongodb.client.model.WriteModel;
23+
24+
public class BulkWrite {
25+
26+
private final MongoCollection<Document> collection;
27+
private final MongoClient mongoClient;
28+
private final MongoDatabase database;
29+
30+
private BulkWrite() {
31+
final String uri = System.getenv("DRIVER_REF_URI");
32+
33+
mongoClient = MongoClients.create(uri);
34+
database = mongoClient.getDatabase("crudOps");
35+
collection = database.getCollection("bulkWrite");
36+
}
37+
38+
public static void main(String[] args) {
39+
BulkWrite bulkWrite = new BulkWrite();
40+
System.out.println("Ordered BulkWrite");
41+
bulkWrite.setUpCollection();
42+
bulkWrite.bulkWriteExample();
43+
bulkWrite.preview();
44+
45+
System.out.println("Unordered BulkWrite");
46+
bulkWrite.setUpCollection();
47+
bulkWrite.bulkWriteNotOrderedExample();
48+
bulkWrite.preview();
49+
50+
System.out.println("Insert BulkWriteException");
51+
bulkWrite.setUpCollection();
52+
bulkWrite.insertExceptionExample();
53+
54+
System.out.println("Insert");
55+
bulkWrite.setUpCollection();
56+
bulkWrite.insertDocumentsExample();
57+
bulkWrite.preview();
58+
59+
System.out.println("Replace");
60+
bulkWrite.setUpCollection();
61+
bulkWrite.replaceDocumentsExample();
62+
bulkWrite.preview();
63+
64+
System.out.println("Update");
65+
bulkWrite.setUpCollection();
66+
bulkWrite.updateDocumentsExample();
67+
bulkWrite.preview();
68+
69+
System.out.println("Delete");
70+
bulkWrite.setUpCollection();
71+
bulkWrite.deleteDocumentsExample();
72+
bulkWrite.preview();
73+
}
74+
75+
76+
private void insertExceptionExample() {
77+
// begin insertExceptionExample
78+
try {
79+
List<WriteModel<Document>> bulkOperations = new ArrayList<>();
80+
81+
// Creates instructions to insert documents
82+
InsertOneModel<Document> doc1 = new InsertOneModel<>(new Document("_id", 1));
83+
InsertOneModel<Document> doc3 = new InsertOneModel<>(new Document("_id", 3));
84+
85+
bulkOperations.add(doc1);
86+
bulkOperations.add(doc3);
87+
88+
// Runs a bulk write operation for the specified insert WriteModels
89+
collection.bulkWrite(bulkOperations);
90+
91+
// Prints a message if any exceptions occur during the bulk write operation
92+
} catch (MongoBulkWriteException e){
93+
System.out.println("A MongoBulkWriteException occurred with the following message: " + e.getMessage());
94+
}
95+
//end insertExceptionExample
96+
}
97+
98+
private void bulkWriteNotOrderedExample() {
99+
List<WriteModel<Document>> bulkOperations = new ArrayList<>();
100+
101+
// Creates instructions to insert a document
102+
InsertOneModel<Document> insertDoc = new InsertOneModel<>(new Document("_id", 6)
103+
.append("name", "Zaynab Omar")
104+
.append("age", 37));
105+
106+
// Creates instructions to replace the first document that matches the query
107+
ReplaceOneModel<Document> replaceDoc = new ReplaceOneModel<>(Filters.eq("_id", 1),
108+
new Document("name", "Sandy Kane")
109+
.append("location", "Helena, MT"));
110+
111+
// Creates instructions to update the first document that matches the query
112+
UpdateOneModel<Document> updateDoc = new UpdateOneModel<>(Filters.eq("name", "Zaynab Omar"),
113+
Updates.set("name", "Zaynab Hassan"));
114+
115+
// Creates instructions to delete all documents that match the query
116+
DeleteManyModel<Document> deleteDoc = new DeleteManyModel<>(Filters.gt("age", 50));
117+
118+
bulkOperations.add(insertDoc);
119+
bulkOperations.add(replaceDoc);
120+
bulkOperations.add(updateDoc);
121+
bulkOperations.add(deleteDoc);
122+
123+
// begin bulkWriteNotOrderedExample
124+
BulkWriteOptions options = new BulkWriteOptions().ordered(false);
125+
126+
// Runs a bulk write operation for the specified insert, replace, update, and delete WriteModels in any order
127+
collection.bulkWrite(bulkOperations, options);
128+
//end bulkWriteNotOrderedExample
129+
}
130+
131+
private void bulkWriteExample() {
132+
// begin bulkWriteExample
133+
List<WriteModel<Document>> bulkOperations = new ArrayList<>();
134+
135+
// Creates instructions to insert a document
136+
InsertOneModel<Document> insertDoc = new InsertOneModel<>(new Document("_id", 6)
137+
.append("name", "Zaynab Omar")
138+
.append("age", 37));
139+
140+
// Creates instructions to replace the first document matched by the query
141+
ReplaceOneModel<Document> replaceDoc = new ReplaceOneModel<>(Filters.eq("_id", 1),
142+
new Document("name", "Sandy Kane")
143+
.append("location", "Helena, MT"));
144+
145+
// Creates instructions to update the first document matched by the query
146+
UpdateOneModel<Document> updateDoc = new UpdateOneModel<>(Filters.eq("name", "Zaynab Omar"),
147+
Updates.set("name", "Zaynab Hassan"));
148+
149+
// Creates instructions to delete all documents matched by the query
150+
DeleteManyModel<Document> deleteDoc = new DeleteManyModel<>(Filters.gt("age", 50));
151+
152+
bulkOperations.add(insertDoc);
153+
bulkOperations.add(replaceDoc);
154+
bulkOperations.add(updateDoc);
155+
bulkOperations.add(deleteDoc);
156+
157+
// Runs a bulk write operation for the specified the insert, replace, update, and delete WriteModels in order
158+
collection.bulkWrite(bulkOperations);
159+
//end bulkWriteExample
160+
}
161+
162+
private void insertDocumentsExample(){
163+
List<WriteModel<Document>> bulkOperations = new ArrayList<>();
164+
165+
// Creates instructions to insert multiple documents
166+
// begin insertDocumentsExample
167+
InsertOneModel<Document> juneDoc = new InsertOneModel<>(new Document("name", "June Carrie")
168+
.append("age", 17));
169+
170+
InsertOneModel<Document> kevinDoc = new InsertOneModel<>(new Document("name", "Kevin Moss")
171+
.append("age", 22));
172+
//end insertDocumentsExample
173+
174+
bulkOperations.add(juneDoc);
175+
bulkOperations.add(kevinDoc);
176+
177+
// Runs a bulk write operation for the specified insert WriteModels
178+
collection.bulkWrite(bulkOperations);
179+
}
180+
181+
private void replaceDocumentsExample(){
182+
List<WriteModel<Document>> bulkOperations = new ArrayList<>();
183+
184+
// Creates instructions to replace the first document matched by the query
185+
// begin replaceDocumentsExample
186+
ReplaceOneModel<Document> celineDoc = new ReplaceOneModel<>(
187+
Filters.eq("_id", 1),
188+
new Document("name", "Celine Stork")
189+
.append("location", "San Diego, CA"));
190+
//end replaceDocumentsExample
191+
192+
bulkOperations.add(celineDoc);
193+
194+
// Runs a bulk write operation for the specified replace WriteModel
195+
collection.bulkWrite(bulkOperations);
196+
}
197+
198+
private void updateDocumentsExample(){
199+
List<WriteModel<Document>> bulkOperations = new ArrayList<>();
200+
201+
// Creates instructions to update the first document matched by the query
202+
// begin updateDocumentsExample
203+
UpdateOneModel<Document> updateDoc = new UpdateOneModel<>(
204+
Filters.eq("_id", 2),
205+
Updates.set("age", 31));
206+
//end updateDocumentsExample
207+
208+
bulkOperations.add(updateDoc);
209+
210+
// Runs a bulk write operation for the specified update WriteModel
211+
collection.bulkWrite(bulkOperations);
212+
}
213+
214+
private void deleteDocumentsExample(){
215+
List<WriteModel<Document>> bulkOperations = new ArrayList<>();
216+
217+
// Creates instructions to delete the first document matched by the query
218+
// begin deleteDocumentsExample
219+
DeleteOneModel<Document> deleteDoc = new DeleteOneModel<>(Filters.eq("_id", 1));
220+
//end deleteDocumentsExample
221+
222+
bulkOperations.add(deleteDoc);
223+
224+
// Runs a bulk write operation for the specified delete WriteModel
225+
collection.bulkWrite(bulkOperations);
226+
}
227+
228+
private void preview(){
229+
collection.find().forEach(doc -> System.out.println(doc.toJson()));
230+
}
231+
232+
private void setUpCollection(){
233+
collection.drop();
234+
235+
//begin bulkOpsList
236+
List<WriteModel<Document>> bulkOperations = new ArrayList<>();
237+
//end bulkOpsList
238+
239+
InsertOneModel<Document> karen = new InsertOneModel<>(new Document("_id", 1)
240+
.append("name", "Karen Sandoval")
241+
.append("age", 31));
242+
243+
InsertOneModel<Document> william = new InsertOneModel<>(new Document("_id", 2)
244+
.append("name", "William Chin")
245+
.append("age", 54));
246+
247+
InsertOneModel<Document> shayla = new InsertOneModel<>(new Document("_id", 8)
248+
.append("name", "Shayla Ray")
249+
.append("age", 20));
250+
251+
bulkOperations.add(karen);
252+
bulkOperations.add(william);
253+
bulkOperations.add(shayla);
254+
255+
collection.bulkWrite(bulkOperations);
256+
}
257+
}

0 commit comments

Comments
 (0)