Skip to content

Commit 52f1d23

Browse files
committed
DOCSP-30086: bulk ops cleanup (#109)
# Pull Request Info [PR Reviewing Guidelines](https://github.com/mongodb/docs-java/blob/master/REVIEWING.md) JIRA - https://jira.mongodb.org/browse/DOCSP-30086 [Staging](https://docs-mongodbcom-staging.corp.mongodb.com/kotlin/docsworker-xlarge/DOCSP-30086-bulkops-cleanup/fundamentals/crud/write-operations/bulk/) ## Self-Review Checklist - [x] Is this free of any warnings or errors in the RST? - [x] Did you run a spell-check? - [x] Did you run a grammar-check? - [x] Are all the links working? (cherry picked from commit 12f9ff7)
1 parent 07b4471 commit 52f1d23

11 files changed

+169
-151
lines changed

examples/src/test/kotlin/BulkTest.kt

Lines changed: 54 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ import java.util.*
1414
import kotlin.test.*
1515

1616
// :snippet-start: bulk-data-model
17-
data class SampleDoc(
17+
data class Person(
1818
@BsonId val id: Int,
19-
val x: Int? = null
19+
val name: String,
20+
val age: Int? = null,
21+
val location: String? = null
2022
)
2123
// :snippet-end:
2224

@@ -26,15 +28,16 @@ internal class BulkTest {
2628
val config = getConfig()
2729
val client = MongoClient.create(config.connectionUri)
2830
val database = client.getDatabase("sample_db")
29-
val collection = database.getCollection<SampleDoc>("sample_docs")
31+
val collection = database.getCollection<Person>("people")
3032

3133
@BeforeAll
3234
@JvmStatic
3335
fun beforeAll() {
3436
runBlocking {
3537
val sampleDocuments = listOf(
36-
SampleDoc(1),
37-
SampleDoc(2)
38+
Person(1, "Karen Sandoval", 31),
39+
Person(2, "William Chin", 54),
40+
Person(8, "Shayla Ray", 20)
3841
)
3942
collection.insertMany(sampleDocuments)
4043
}
@@ -53,16 +56,14 @@ internal class BulkTest {
5356
@Test
5457
fun insertOperationTest() = runBlocking {
5558
// :snippet-start: insert-one
56-
val doc3 = InsertOneModel(SampleDoc(3))
57-
val doc4 = InsertOneModel(SampleDoc(4))
59+
val juneDoc = InsertOneModel(Person(3, "June Carrie", 17))
60+
val kevinDoc = InsertOneModel(Person(4, "Kevin Moss", 22))
5861
// :snippet-end:
5962
// :snippet-start: bulk-write-exception
60-
val doc5 = InsertOneModel(SampleDoc(1))
61-
val doc6 = InsertOneModel(SampleDoc(3))
6263
try {
6364
val bulkOperations = listOf(
64-
(doc5),
65-
(doc6)
65+
(InsertOneModel(Person(1, "James Smith", 13))),
66+
(InsertOneModel(Person(3, "Colin Samuels")))
6667
)
6768
val bulkWrite = collection.bulkWrite(bulkOperations)
6869
assertFalse(bulkWrite.wasAcknowledged()) // :remove:
@@ -72,8 +73,9 @@ internal class BulkTest {
7273
// :snippet-end:
7374
// Junit test for the above code
7475
val expected = listOf(
75-
SampleDoc(1),
76-
SampleDoc(2)
76+
Person(1, "Karen Sandoval", 31),
77+
Person(2, "William Chin", 54),
78+
Person(8, "Shayla Ray", 20)
7779
)
7880
assertEquals(expected, collection.find().toList())
7981
}
@@ -82,7 +84,7 @@ internal class BulkTest {
8284
fun replaceOneTest() = runBlocking {
8385
// :snippet-start: replace-one
8486
val filter = Filters.eq("_id", 1)
85-
val insert = SampleDoc(1, 4)
87+
val insert = Person(1, "Celine Stork", location = "San Diego, CA")
8688
val doc = ReplaceOneModel(filter, insert)
8789
// :snippet-end:
8890
// Junit test for the above code
@@ -94,8 +96,8 @@ internal class BulkTest {
9496
fun updateOneTest() = runBlocking {
9597
// :snippet-start: update-one
9698
val filter = Filters.eq("_id", 2)
97-
val update = Updates.set(SampleDoc::x.name, 8)
98-
val doc = UpdateOneModel<SampleDoc>(filter, update)
99+
val update = Updates.inc(Person::age.name, 1)
100+
val doc = UpdateOneModel<Person>(filter, update)
99101
// :snippet-end:
100102
// Junit test for the above code
101103
val updateTest = collection.bulkWrite(listOf(doc))
@@ -105,66 +107,71 @@ internal class BulkTest {
105107
@Test
106108
fun deleteOneTest() = runBlocking {
107109
// :snippet-start: delete
108-
val filter = Filters.eq("_id", 1)
109-
val doc = DeleteOneModel<SampleDoc>(filter)
110+
val deleteId1 = DeleteOneModel<Person>(Filters.eq("_id", 1))
111+
val deleteAgeLt30 = DeleteManyModel<Person>(Filters.lt(Person::age.name, 30))
110112
// :snippet-end:
111113
// Junit test for the above code
112-
val deleteTest = collection.bulkWrite(listOf(doc))
114+
val deleteTest = collection.bulkWrite(listOf(deleteId1, deleteAgeLt30))
113115
assertTrue(deleteTest.wasAcknowledged())
114-
assertTrue(collection.find(filter).toList().isEmpty())
116+
val expected = listOf(
117+
Person(2, "William Chin", 54),
118+
)
119+
assertEquals(expected, collection.find().toList())
115120
}
116121

117122
@Test
118123
fun orderOfOperationsTest() = runBlocking {
119124
// :snippet-start: ordered
120-
val doc1= InsertOneModel(SampleDoc(3))
121-
val doc2 = ReplaceOneModel(
125+
val insertMdl = InsertOneModel(Person(6, "Zaynab Omar", 37))
126+
val replaceMdl = ReplaceOneModel(
122127
Filters.eq("_id", 1),
123-
SampleDoc(1, 2)
128+
Person(1, "Sandy Kane", location = "Helena, MT")
124129
)
125-
val doc3 = UpdateOneModel<SampleDoc>(
126-
Filters.eq("_id", 3),
127-
Updates.set(SampleDoc::x.name, 2)
130+
val updateMdl = UpdateOneModel<Person>(
131+
Filters.eq("_id", 6),
132+
Updates.set(Person::name.name, "Zaynab Hassan")
128133
)
129-
val doc4 = DeleteManyModel<SampleDoc>(Filters.eq(SampleDoc::x.name, 2))
134+
val deleteMdl = DeleteManyModel<Person>(Filters.gt(Person::age.name, 50))
130135

131136
val bulkOperations = listOf(
132-
doc1,
133-
doc2,
134-
doc3,
135-
doc4
137+
insertMdl,
138+
replaceMdl,
139+
updateMdl,
140+
deleteMdl
136141
)
137142

138-
val update = collection.bulkWrite(bulkOperations)
143+
val result = collection.bulkWrite(bulkOperations)
139144
// :snippet-end:
140145
// Junit test for the above code
141-
assertTrue(update.wasAcknowledged())
146+
assertTrue(result.wasAcknowledged())
147+
collection.drop()
142148
}
143149

144150
@Test
145151
fun unorderedExecutionTest() = runBlocking {
146-
val doc1 = InsertOneModel(SampleDoc(3))
147-
val doc2 = ReplaceOneModel(
152+
val insertMdl = InsertOneModel(Person(6, "Zaynab Omar", 37))
153+
val replaceMdl = ReplaceOneModel(
148154
Filters.eq("_id", 1),
149-
SampleDoc(1, 2)
155+
Person(1, "Sandy Kane", location = "Helena, MT")
150156
)
151-
val doc3 = UpdateOneModel<SampleDoc>(
152-
Filters.eq("_id", 3),
153-
Updates.set(SampleDoc::x.name, 2)
154-
)
155-
val doc4 = DeleteManyModel<SampleDoc>(Filters.eq(SampleDoc::x.name, 2))
157+
val updateMdl = UpdateOneModel<Person>(
158+
Filters.eq("_id", 6),
159+
Updates.set(Person::name.name, "Zaynab Hassan")
160+
)
161+
val deleteMdl = DeleteManyModel<Person>(Filters.gt(Person::age.name, 50))
156162

157163
val bulkOperations = listOf(
158-
doc1,
159-
doc2,
160-
doc3,
161-
doc4
164+
insertMdl,
165+
replaceMdl,
166+
updateMdl,
167+
deleteMdl
162168
)
163169
// :snippet-start: unordered
164170
val options = BulkWriteOptions().ordered(false)
165-
val unorderedUpdate = collection.bulkWrite(bulkOperations, options)
171+
val unorderedResult = collection.bulkWrite(bulkOperations, options)
166172
// :snippet-end:
167173
// Junit test for the above code
168-
assertTrue(unorderedUpdate.wasAcknowledged())
174+
assertTrue(unorderedResult.wasAcknowledged())
175+
collection.drop()
169176
}
170177
}

snooty.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ driver = "kotlin"
2020
driver-short = "Kotlin driver"
2121
driver-long = "MongoDB Kotlin Driver"
2222
version = "4.10"
23-
full-version = "4.10.1"
23+
full-version = "{+version+}.1"
2424
mdb-server = "MongoDB server"
2525
kotlin-docs = "https://kotlinlang.org/docs"
2626

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
data class SampleDoc(
1+
data class Person(
22
@BsonId val id: Int,
3-
val x: Int? = null
3+
val name: String,
4+
val age: Int? = null,
5+
val location: String? = null
46
)

source/examples/generated/BulkTest.snippet.bulk-write-exception.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
val doc5 = InsertOneModel(SampleDoc(1))
2-
val doc6 = InsertOneModel(SampleDoc(3))
31
try {
42
val bulkOperations = listOf(
5-
(doc5),
6-
(doc6)
3+
(InsertOneModel(Person(1, "James Smith", 13))),
4+
(InsertOneModel(Person(3, "Colin Samuels")))
75
)
86
val bulkWrite = collection.bulkWrite(bulkOperations)
97
} catch (e: MongoBulkWriteException) {
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
val filter = Filters.eq("_id", 1)
2-
val doc = DeleteOneModel<SampleDoc>(filter)
1+
val deleteId1 = DeleteOneModel<Person>(Filters.eq("_id", 1))
2+
val deleteAgeLt30 = DeleteManyModel<Person>(Filters.lt(Person::age.name, 30))
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
val doc3 = InsertOneModel(SampleDoc(3))
2-
val doc4 = InsertOneModel(SampleDoc(4))
1+
val juneDoc = InsertOneModel(Person(3, "June Carrie", 17))
2+
val kevinDoc = InsertOneModel(Person(4, "Kevin Moss", 22))
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
val doc1= InsertOneModel(SampleDoc(3))
2-
val doc2 = ReplaceOneModel(
1+
val insertMdl = InsertOneModel(Person(6, "Zaynab Omar", 37))
2+
val replaceMdl = ReplaceOneModel(
33
Filters.eq("_id", 1),
4-
SampleDoc(1, 2)
4+
Person(1, "Sandy Kane", location = "Helena, MT")
55
)
6-
val doc3 = UpdateOneModel<SampleDoc>(
7-
Filters.eq("_id", 3),
8-
Updates.set(SampleDoc::x.name, 2)
6+
val updateMdl = UpdateOneModel<Person>(
7+
Filters.eq("_id", 6),
8+
Updates.set(Person::name.name, "Zaynab Hassan")
99
)
10-
val doc4 = DeleteManyModel<SampleDoc>(Filters.eq(SampleDoc::x.name, 2))
10+
val deleteMdl = DeleteManyModel<Person>(Filters.gt(Person::age.name, 50))
1111

1212
val bulkOperations = listOf(
13-
doc1,
14-
doc2,
15-
doc3,
16-
doc4
13+
insertMdl,
14+
replaceMdl,
15+
updateMdl,
16+
deleteMdl
1717
)
1818

19-
val update = collection.bulkWrite(bulkOperations)
19+
val result = collection.bulkWrite(bulkOperations)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
val filter = Filters.eq("_id", 1)
2-
val insert = SampleDoc(1, 4)
2+
val insert = Person(1, "Celine Stork", location = "San Diego, CA")
33
val doc = ReplaceOneModel(filter, insert)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
val options = BulkWriteOptions().ordered(false)
2-
val unorderedUpdate = collection.bulkWrite(bulkOperations, options)
2+
val unorderedResult = collection.bulkWrite(bulkOperations, options)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
val filter = Filters.eq("_id", 2)
2-
val update = Updates.set(SampleDoc::x.name, 8)
3-
val doc = UpdateOneModel<SampleDoc>(filter, update)
2+
val update = Updates.inc(Person::age.name, 1)
3+
val doc = UpdateOneModel<Person>(filter, update)

0 commit comments

Comments
 (0)