Skip to content

Commit 91e32c0

Browse files
committed
More samples
1 parent 09114fb commit 91e32c0

File tree

12 files changed

+337
-28
lines changed

12 files changed

+337
-28
lines changed

astra-db-java/src/main/java/com/datastax/astra/client/model/FindOneAndDeleteOptions.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public FindOneAndDeleteOptions sort(Sort... sort) {
7070
* @param sorts The sort criteria to be applied to the findOne operation.
7171
* @return current command
7272
*/
73-
public FindOneAndDeleteOptions vectorize(String vectorize, Sort ... sorts) {
73+
public FindOneAndDeleteOptions sort(String vectorize, Sort ... sorts) {
7474
setSort(Sorts.vectorize(vectorize));
7575
if (sorts != null) {
7676
getSort().putAll(OptionsUtils.sort(sorts));
@@ -85,7 +85,7 @@ public FindOneAndDeleteOptions vectorize(String vectorize, Sort ... sorts) {
8585
* @param sorts The sort criteria to be applied to the findOne operation.
8686
* @return current command
8787
*/
88-
public FindOneAndDeleteOptions vector(float[] vector, Sort... sorts) {
88+
public FindOneAndDeleteOptions sort(float[] vector, Sort... sorts) {
8989
setSort(Sorts.vector(vector));
9090
if (sorts != null) {
9191
getSort().putAll(OptionsUtils.sort(sorts));
@@ -145,7 +145,7 @@ public static FindOneAndDeleteOptions projection(Projection... projection) {
145145
* @return A new {@link FindOneAndDeleteOptions} instance configured with the provided vectorize criteria.
146146
*/
147147
public static FindOneAndDeleteOptions vectorize(String vectorize, Sort... sorts) {
148-
return new FindOneAndDeleteOptions().vectorize(vectorize, sorts);
148+
return new FindOneAndDeleteOptions().sort(vectorize, sorts);
149149
}
150150

151151
/**
@@ -156,7 +156,7 @@ public static FindOneAndDeleteOptions vectorize(String vectorize, Sort... sorts)
156156
* @return A new {@link FindOneAndDeleteOptions} instance configured with the provided vector criteria.
157157
*/
158158
public static FindOneAndDeleteOptions vector(float[] vector, Sort... sorts) {
159-
return new FindOneAndDeleteOptions().vector(vector, sorts);
159+
return new FindOneAndDeleteOptions().sort(vector, sorts);
160160
}
161161
}
162162

astra-db-java/src/main/java/com/datastax/astra/client/model/FindOneOptions.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public FindOneOptions sort(Sort... sort) {
7575
* @param sorts The sort criteria to be applied to the findOne operation.
7676
* @return current command
7777
*/
78-
public FindOneOptions vectorize(String vectorize, Sort ... sorts) {
78+
public FindOneOptions sort(String vectorize, Sort ... sorts) {
7979
setSort(Sorts.vectorize(vectorize));
8080
if (sorts != null) {
8181
getSort().putAll(OptionsUtils.sort(sorts));
@@ -90,7 +90,7 @@ public FindOneOptions vectorize(String vectorize, Sort ... sorts) {
9090
* @param sorts The sort criteria to be applied to the findOne operation.
9191
* @return current command
9292
*/
93-
public FindOneOptions vector(float[] vector, Sort... sorts) {
93+
public FindOneOptions sort(float[] vector, Sort... sorts) {
9494
setSort(Sorts.vector(vector));
9595
if (sorts != null) {
9696
getSort().putAll(OptionsUtils.sort(sorts));
@@ -143,6 +143,28 @@ public static FindOneOptions sort(Sort... sort) {
143143
return new FindOneOptions().sort(sort);
144144
}
145145

146+
/**
147+
* Initializes the building process with sorting options.
148+
*
149+
* @param vector string to be vectorized in the findOne operation.
150+
* @param sort The sort criteria to be applied to the findOne operation.
151+
* @return A new {@link FindOneOptions} instance configured with the provided sort criteria.
152+
*/
153+
public static FindOneOptions sort(float[] vector, Sort... sort) {
154+
return new FindOneOptions().sort(vector, sort);
155+
}
156+
157+
/**
158+
* Initializes the building process with sorting options.
159+
*
160+
* @param vectorize string to be vectorized in the findOne operation.
161+
* @param sort The sort criteria to be applied to the findOne operation.
162+
* @return A new {@link FindOneOptions} instance configured with the provided sort criteria.
163+
*/
164+
public static FindOneOptions sort(String vectorize, Sort... sort) {
165+
return new FindOneOptions().sort(vectorize, sort);
166+
}
167+
146168
/**
147169
* Initializes the building process with projection options.
148170
*
@@ -170,7 +192,7 @@ public static FindOneOptions includeSimilarity() {
170192
* @return A new {@link FindOneOptions} instance configured with the provided vectorize criteria.
171193
*/
172194
public static FindOneOptions vectorize(String vectorize, Sort... sorts) {
173-
return new FindOneOptions().vectorize(vectorize, sorts);
195+
return new FindOneOptions().sort(vectorize, sorts);
174196
}
175197

176198
/**
@@ -181,7 +203,7 @@ public static FindOneOptions vectorize(String vectorize, Sort... sorts) {
181203
* @return A new {@link FindOneOptions} instance configured with the provided vector criteria.
182204
*/
183205
public static FindOneOptions vector(float[] vector, Sort... sorts) {
184-
return new FindOneOptions().vector(vector, sorts);
206+
return new FindOneOptions().sort(vector, sorts);
185207
}
186208
}
187209
}

astra-db-java/src/main/java/com/datastax/astra/client/model/FindOptions.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public FindOptions sort(Sort... sort) {
9191
* @param sorts The sort criteria to be applied to the findOne operation.
9292
* @return current command
9393
*/
94-
public FindOptions vectorize(String vectorize, Sort ... sorts) {
94+
public FindOptions sort(String vectorize, Sort ... sorts) {
9595
setSort(Sorts.vectorize(vectorize));
9696
if (sorts != null) {
9797
getSort().putAll(OptionsUtils.sort(sorts));
@@ -106,7 +106,7 @@ public FindOptions vectorize(String vectorize, Sort ... sorts) {
106106
* @param sorts The sort criteria to be applied to the findOne operation.
107107
* @return current command
108108
*/
109-
public FindOptions vector(float[] vector, Sort... sorts) {
109+
public FindOptions sort(float[] vector, Sort... sorts) {
110110
setSort(Sorts.vector(vector));
111111
if (sorts != null) {
112112
getSort().putAll(OptionsUtils.sort(sorts));
@@ -198,11 +198,33 @@ public static FindOptions sort(Sort... sort) {
198198
return new FindOptions().sort(sort);
199199
}
200200

201+
/**
202+
* Initializes the building process with sorting options.
203+
*
204+
* @param vector string to be vectorized in the findOne operation.
205+
* @param sort The sort criteria to be applied to the findOne operation.
206+
* @return A new {@link FindOptions} instance configured with the provided sort criteria.
207+
*/
208+
public static FindOptions sort(float[] vector, Sort... sort) {
209+
return new FindOptions().sort(vector, sort);
210+
}
211+
212+
/**
213+
* Initializes the building process with sorting options.
214+
*
215+
* @param vectorize string to be vectorized in the findOne operation.
216+
* @param sort The sort criteria to be applied to the findOne operation.
217+
* @return A new {@link FindOptions} instance configured with the provided sort criteria.
218+
*/
219+
public static FindOptions sort(String vectorize, Sort... sort) {
220+
return new FindOptions().sort(vectorize, sort);
221+
}
222+
201223
/**
202224
* Initializes the building process with projection options.
203225
*
204226
* @param projection The projection criteria to be applied to the findOne operation.
205-
* @return A new {@link FindOneOptions} instance configured with the provided projection criteria.
227+
* @return A new {@link FindOptions} instance configured with the provided projection criteria.
206228
*/
207229
public static FindOptions projection(Projection... projection) {
208230
return new FindOptions().projection(projection);
@@ -245,7 +267,7 @@ public static FindOptions limit(int limit) {
245267
* @return A new {@link FindOneOptions} instance configured with the provided vectorize criteria.
246268
*/
247269
public static FindOptions vectorize(String vectorize, Sort ... sort) {
248-
return new FindOptions().vectorize(vectorize, sort);
270+
return new FindOptions().sort(vectorize, sort);
249271
}
250272

251273
/**
@@ -256,7 +278,7 @@ public static FindOptions vectorize(String vectorize, Sort ... sort) {
256278
* @return A new {@link FindOneOptions} instance configured with the provided vector criteria.
257279
*/
258280
public static FindOptions vector(float[] vector, Sort ... sort) {
259-
return new FindOptions().vector(vector, sort);
281+
return new FindOptions().sort(vector, sort);
260282
}
261283
}
262284
}

astra-db-java/src/test/java/com/datastax/astra/test/unit/DataApiOptionsTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ void shouldInitializeFindOneAndDeleteOptions() {
7070
assertThat(FindOneAndDeleteOptions.Builder.vectorize("OK")
7171
.sort(Sorts.ascending("test"))
7272
.projection(Projections.include("test"))
73-
.vectorize("ok")
74-
.vector(new float[]{}))
73+
.sort("ok")
74+
.sort(new float[]{}))
7575
.isNotNull();
7676
}
7777

@@ -136,8 +136,8 @@ void shouldTestFindOneOptions() {
136136
.sort(Sorts.ascending("test"))
137137
.includeSimilarity()
138138
.projection(Projections.include("ok"))
139-
.vectorize("ok")
140-
.vector(new float[]{}))
139+
.sort("ok")
140+
.sort(new float[]{}))
141141
.isNotNull();
142142
}
143143

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.datastax.astra.client.collection;
2+
3+
import com.datastax.astra.client.Collection;
4+
import com.datastax.astra.client.DataAPIClient;
5+
import com.datastax.astra.client.exception.TooManyDocumentsToCountException;
6+
import com.datastax.astra.client.model.Document;
7+
import com.datastax.astra.client.model.Filter;
8+
import com.datastax.astra.client.model.Filters;
9+
10+
import static com.datastax.astra.client.model.Filters.lt;
11+
12+
public class CountDocuments {
13+
public static void main(String[] args) {
14+
Collection<Document> collection = new DataAPIClient("TOKEN")
15+
.getDatabase("API_ENDPOINT")
16+
.getCollection("COLLECTION_NAME");
17+
18+
// Building a filter
19+
Filter filter = Filters.and(
20+
Filters.gt("field2", 10),
21+
lt("field3", 20),
22+
Filters.eq("field4", "value"));
23+
24+
try {
25+
// Count with no filter
26+
collection.countDocuments(500);
27+
28+
// Count with a filter
29+
collection.countDocuments(filter, 500);
30+
31+
} catch(TooManyDocumentsToCountException tmde) {
32+
// Explicit error if the count is above the upper limit or above the 1000 limit
33+
}
34+
35+
}
36+
37+
38+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.datastax.astra.client.collection;
2+
3+
import com.datastax.astra.client.Collection;
4+
import com.datastax.astra.client.DataAPIClient;
5+
import com.datastax.astra.client.model.DistinctIterable;
6+
import com.datastax.astra.client.model.Document;
7+
import com.datastax.astra.client.model.Filter;
8+
import com.datastax.astra.client.model.Filters;
9+
import com.datastax.astra.client.model.FindIterable;
10+
import com.datastax.astra.client.model.FindOptions;
11+
12+
import static com.datastax.astra.client.model.Filters.lt;
13+
import static com.datastax.astra.client.model.Projections.exclude;
14+
import static com.datastax.astra.client.model.Projections.include;
15+
16+
public class Distinct {
17+
public static void main(String[] args) {
18+
// Given an existing collection
19+
Collection<Document> collection = new DataAPIClient("TOKEN")
20+
.getDatabase("API_ENDPOINT")
21+
.getCollection("COLLECTION_NAME");
22+
23+
// Building a filter
24+
Filter filter = Filters.and(
25+
Filters.gt("field2", 10),
26+
lt("field3", 20),
27+
Filters.eq("field4", "value"));
28+
29+
// Execute a find operation
30+
DistinctIterable<Document, String> result = collection
31+
.distinct("field", String.class);
32+
DistinctIterable<Document, String> result2 = collection
33+
.distinct("field", filter, String.class);
34+
35+
// Iterate over the result
36+
for (String fieldValue : result) {
37+
System.out.println(fieldValue);
38+
}
39+
}
40+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.datastax.astra.client.collection;
2+
3+
import com.datastax.astra.client.Collection;
4+
import com.datastax.astra.client.DataAPIClient;
5+
import com.datastax.astra.client.model.Document;
6+
import com.datastax.astra.client.model.Filter;
7+
import com.datastax.astra.client.model.Filters;
8+
import com.datastax.astra.client.model.FindIterable;
9+
import com.datastax.astra.client.model.FindOptions;
10+
11+
import static com.datastax.astra.client.model.Filters.lt;
12+
import static com.datastax.astra.client.model.Projections.exclude;
13+
import static com.datastax.astra.client.model.Projections.include;
14+
15+
public class Find {
16+
public static void main(String[] args) {
17+
// Given an existing collection
18+
Collection<Document> collection = new DataAPIClient("TOKEN")
19+
.getDatabase("API_ENDPOINT")
20+
.getCollection("COLLECTION_NAME");
21+
22+
// Building a filter
23+
Filter filter = Filters.and(
24+
Filters.gt("field2", 10),
25+
lt("field3", 20),
26+
Filters.eq("field4", "value"));
27+
28+
// Find Options
29+
FindOptions options = new FindOptions()
30+
.projection(include("field", "field2", "field3")) // select fields
31+
.projection(exclude("_id")) // exclude some fields
32+
.sort(new float[] {0.25f, 0.25f, 0.25f,0.25f, 0.25f}) // similarity vector
33+
.skip(1) // skip first item
34+
.limit(10) // stop after 10 items (max records)
35+
.pageState("pageState") // used for pagination
36+
.includeSimilarity(); // include similarity
37+
38+
// Execute a find operation
39+
FindIterable<Document> result = collection.find(filter, options);
40+
41+
// Iterate over the result
42+
for (Document document : result) {
43+
System.out.println(document);
44+
}
45+
}
46+
}

examples/src/main/java/com/datastax/astra/client/collection/FindOne.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.datastax.astra.client.model.Filter;
77
import com.datastax.astra.client.model.Filters;
88
import com.datastax.astra.client.model.FindOneOptions;
9-
import com.datastax.astra.client.model.Projections;
109

1110
import java.util.Optional;
1211

@@ -15,6 +14,8 @@
1514
import static com.datastax.astra.client.model.Filters.gt;
1615
import static com.datastax.astra.client.model.Filters.lt;
1716
import static com.datastax.astra.client.model.FindOneOptions.Builder.vector;
17+
import static com.datastax.astra.client.model.Projections.exclude;
18+
import static com.datastax.astra.client.model.Projections.include;
1819

1920
public class FindOne {
2021
public static void main(String[] args) {
@@ -29,21 +30,20 @@ public static void main(String[] args) {
2930
lt("field3", 20),
3031
Filters.eq("field4", "value"));
3132
FindOneOptions options = new FindOneOptions()
32-
.projection(Projections.include("field", "field2", "field3"))
33-
.projection(Projections.exclude("_id"))
34-
.vector(new float[] {0.25f, 0.25f, 0.25f,0.25f, 0.25f})
33+
.projection(include("field", "field2", "field3"))
34+
.projection(exclude("_id"))
35+
.sort(new float[] {0.25f, 0.25f, 0.25f,0.25f, 0.25f})
3536
.includeSimilarity();
3637
Optional<Document> result = collection.findOne(filter, options);
3738

3839
// with the import Static Magic
3940
collection.findOne(and(
40-
gt("field2", 10),
41-
lt("field3", 20),
42-
eq("field4", "value")),
43-
44-
vector(new float[] {0.25f, 0.25f, 0.25f,0.25f, 0.25f})
45-
.projection(Projections.include("field", "field2", "field3"))
46-
.projection(Projections.exclude("_id"))
41+
gt("field2", 10),
42+
lt("field3", 20),
43+
eq("field4", "value")),
44+
vector(new float[] {0.25f, 0.25f, 0.25f,0.25f, 0.25f})
45+
.projection(include("field", "field2", "field3"))
46+
.projection(exclude("_id"))
4747
.includeSimilarity()
4848
);
4949

0 commit comments

Comments
 (0)