Skip to content

Commit f404597

Browse files
authored
Merge branch 'master' into DOCSP-41120-cxn
2 parents 5e443d0 + fe190a5 commit f404597

19 files changed

+1950
-4
lines changed

snooty.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ intersphinx = [ "https://www.mongodb.com/docs/manual/objects.inv",
88

99
toc_landing_pages = [
1010
"/read",
11-
"/connect"
11+
"/connect",
12+
"/indexes",
13+
"work-with-indexes",
1214
]
1315

1416
sharedinclude_root = "https://raw.githubusercontent.com/10gen/docs-shared/main/"

source/includes/indexes/indexes.kt

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import com.mongodb.ConnectionString
2+
import com.mongodb.MongoClientSettings
3+
import com.mongodb.client.model.Indexes
4+
import com.mongodb.client.model.Filters
5+
import com.mongodb.client.model.Sorts
6+
import com.mongodb.kotlin.client.MongoClient
7+
import org.bson.codecs.pojo.annotations.BsonId
8+
import org.bson.types.ObjectId
9+
10+
// start-movie-class
11+
data class Movie(
12+
@BsonId
13+
val id: ObjectId,
14+
val title: String? = "",
15+
val genre: String? = "",
16+
val cast: List<String>? = null,
17+
val plot: String? = "",
18+
)
19+
// end-movie-class
20+
21+
fun main() {
22+
val uri = "<connection string URI>"
23+
24+
val settings = MongoClientSettings.builder()
25+
.applyConnectionString(ConnectionString(uri))
26+
.retryWrites(true)
27+
.build()
28+
29+
val mongoClient = MongoClient.create(settings)
30+
val database = mongoClient.getDatabase("sample_mflix")
31+
val collection = database.getCollection<Movie>("movies")
32+
33+
// start-remove-index
34+
collection.dropIndex("_title_")
35+
// end-remove-index
36+
37+
// start-remove-all-indexes
38+
collection.dropIndexes()
39+
// end-remove-all-indexes
40+
41+
// start-index-single
42+
collection.createIndex(Indexes.ascending(Movie::title.name))
43+
// end-index-single
44+
45+
// start-index-single-query
46+
val filter = Filters.eq(Movie::title.name, "Batman")
47+
val sort = Sorts.ascending(Movie::title.name)
48+
val results = collection.find(filter).sort(sort)
49+
50+
results.forEach { result ->
51+
println(result)
52+
}
53+
// end-index-single-query
54+
}

source/includes/read/project.kt

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package org.example
2+
import com.mongodb.ConnectionString
3+
import com.mongodb.MongoClientSettings
4+
import com.mongodb.client.model.Filters.eq
5+
import com.mongodb.client.model.Projections
6+
import com.mongodb.kotlin.client.MongoClient
7+
import org.bson.codecs.pojo.annotations.BsonId
8+
import org.bson.types.ObjectId
9+
10+
// start-data-class
11+
data class Restaurant(
12+
@BsonId
13+
val id: ObjectId? = null,
14+
val name: String,
15+
val borough: String,
16+
val cuisine: String
17+
)
18+
// end-data-class
19+
20+
fun main() {
21+
val uri = "<connection string URI>"
22+
23+
val settings = MongoClientSettings.builder()
24+
.applyConnectionString(ConnectionString(uri))
25+
.retryWrites(true)
26+
.build()
27+
28+
val mongoClient = MongoClient.create(settings)
29+
val database = mongoClient.getDatabase("sample_restaurants")
30+
val collection = database.getCollection<Restaurant>("restaurants")
31+
32+
// start-project
33+
val projection = Projections.fields(
34+
Projections.include(
35+
Restaurant::name.name,
36+
Restaurant::cuisine.name,
37+
Restaurant::borough.name
38+
)
39+
)
40+
41+
val results = collection
42+
.find(eq(Restaurant::name.name, "Emerald Pub"))
43+
.projection(projection)
44+
45+
results.forEach { result ->
46+
println(result)
47+
}
48+
// end-project
49+
50+
// start-project-exclude
51+
val projection = Projections.fields(
52+
Projections.excludeId(),
53+
Projections.include(
54+
Restaurant::name.name,
55+
Restaurant::cuisine.name,
56+
Restaurant::borough.name
57+
)
58+
)
59+
60+
val results = collection
61+
.find(eq(Restaurant::name.name, "Emerald Pub"))
62+
.projection(projection)
63+
64+
results.forEach { result ->
65+
println(result)
66+
}
67+
// end-project-exclude
68+
}

source/includes/read/retrieve.kt

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import com.mongodb.ConnectionString
2+
import com.mongodb.MongoClientSettings
3+
import com.mongodb.kotlin.client.*
4+
import com.mongodb.client.model.Filters.*
5+
6+
// start-data-class
7+
data class Restaurant(
8+
val name: String,
9+
val cuisine: String
10+
)
11+
// end-data-class
12+
13+
fun main() {
14+
val uri = "<connection string URI>"
15+
16+
val settings = MongoClientSettings.builder()
17+
.applyConnectionString(ConnectionString(uri))
18+
.retryWrites(true)
19+
.build()
20+
21+
val mongoClient = MongoClient.create(settings)
22+
val database = mongoClient.getDatabase("sample_restaurants")
23+
val collection = database.getCollection<Restaurant>("restaurants")
24+
25+
// start-find
26+
val results = collection.find(eq(Restaurant::cuisine.name, "Spanish"))
27+
// end-find
28+
29+
// start-find-iterate
30+
val results = collection.find(eq(Restaurant::cuisine.name, "Spanish"))
31+
results.forEach { result ->
32+
println(result)
33+
}
34+
// end-find-iterate
35+
36+
// start-find-all
37+
val results = collection.find()
38+
// end-find-all
39+
40+
// start-modified-find
41+
val results = collection
42+
.find(eq(Restaurant::cuisine.name, "Spanish"))
43+
.limit(10)
44+
.maxTime(10000)
45+
// end-modified-find
46+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package org.example
2+
import com.mongodb.ConnectionString
3+
import com.mongodb.MongoClientSettings
4+
import com.mongodb.client.model.Filters.*
5+
import com.mongodb.kotlin.client.MongoClient
6+
import org.bson.codecs.pojo.annotations.BsonId
7+
8+
// start-data-class
9+
data class Fruit(
10+
@BsonId
11+
val id: Int,
12+
val name: String,
13+
val quantity: Int,
14+
val rating: Int,
15+
val color: String,
16+
val type: List<String>
17+
)
18+
// end-data-class
19+
20+
fun main() {
21+
// start-sample-data
22+
val uri = "<connection string URI>"
23+
24+
val settings = MongoClientSettings.builder()
25+
.applyConnectionString(ConnectionString(uri))
26+
.retryWrites(true)
27+
.build()
28+
29+
val mongoClient = MongoClient.create(settings)
30+
val database = mongoClient.getDatabase("sample_fruit")
31+
val collection = database.getCollection<Fruit>("fruits")
32+
33+
collection.insertMany(listOf(
34+
Fruit(1, "apples", 5, 3, "red", listOf("fuji", "honeycrisp")),
35+
Fruit(2, "bananas", 7, 4, "yellow", listOf("cavendish")),
36+
Fruit(3, "oranges", 6, 2, null, listOf("naval", "mandarin")),
37+
Fruit(4, "pineapples", 3, 5, "yellow", null)
38+
))
39+
// end-sample-data
40+
41+
// start-find-exact
42+
val results = collection.find(eq(Fruit::color.name, "yellow"))
43+
44+
results.forEach { result ->
45+
println(result);
46+
}
47+
// end-find-exact
48+
49+
// start-find-comparison
50+
val results = collection.find(gt(Fruit::rating.name, 2))
51+
52+
results.forEach { result ->
53+
println(result)
54+
}
55+
// end-find-comparison
56+
57+
// start-find-logical
58+
val results = collection.find(
59+
or(
60+
gt(Fruit::quantity.name, 5),
61+
eq(Fruit::color.name, "yellow")
62+
)
63+
)
64+
65+
results.forEach { result ->
66+
println(result)
67+
}
68+
// end-find-logical
69+
70+
// start-find-array
71+
val results = collection.find(size(Fruit::type.name, 2))
72+
73+
results.forEach { result ->
74+
println(result)
75+
}
76+
// end-find-array
77+
78+
// start-find-element
79+
val results = collection.find(exists(Fruit::color.name))
80+
81+
results.forEach { result ->
82+
println(result)
83+
}
84+
// end-find-element
85+
86+
// start-find-evaluation
87+
val results = collection.find(regex(Fruit::name.name, "p{2,}"))
88+
89+
results.forEach { result ->
90+
println(result)
91+
}
92+
// end-find-evaluation
93+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package org.example
2+
import com.mongodb.ConnectionString
3+
import com.mongodb.MongoClientSettings
4+
import com.mongodb.client.model.Filters.eq
5+
import com.mongodb.client.model.Sorts
6+
import com.mongodb.kotlin.client.MongoClient
7+
8+
// start-data-class
9+
data class Restaurant(
10+
val name: String,
11+
val borough: String,
12+
val cuisine: String
13+
)
14+
// end-data-class
15+
16+
fun main() {
17+
val uri = "<connection string URI>"
18+
19+
val settings = MongoClientSettings.builder()
20+
.applyConnectionString(ConnectionString(uri))
21+
.retryWrites(true)
22+
.build()
23+
24+
val mongoClient = MongoClient.create(settings)
25+
val database = mongoClient.getDatabase("sample_restaurants")
26+
val collection = database.getCollection<Restaurant>("restaurants")
27+
28+
// start-limit
29+
val results = collection
30+
.find(eq(Restaurant::cuisine.name, "Italian"))
31+
.limit(5)
32+
33+
results.forEach { result ->
34+
println(result)
35+
}
36+
// end-limit
37+
38+
// start-sort
39+
val results = collection
40+
.find(eq(Restaurant::cuisine.name, "Italian"))
41+
.sort(Sorts.ascending(Restaurant::name.name))
42+
43+
results.forEach { result ->
44+
println(result)
45+
}
46+
// end-sort
47+
48+
// start-skip
49+
val results = collection
50+
.find(eq(Restaurant::cuisine.name, "Italian"))
51+
.skip(10)
52+
53+
results.forEach { result ->
54+
println(result)
55+
}
56+
// end-skip
57+
58+
// start-limit-sort-skip
59+
val results = collection
60+
.find(eq(Restaurant::cuisine.name, "Italian"))
61+
.sort(Sorts.ascending(Restaurant::name.name))
62+
.skip(10)
63+
.limit(5)
64+
65+
results.forEach { result ->
66+
println(result)
67+
}
68+
// end-limit-sort-skip
69+
}

0 commit comments

Comments
 (0)