Skip to content

Commit 7e94c1b

Browse files
christophstroblmp911de
authored andcommitted
Fix slice argument in query fields projection.
We now use a Collection instead of an Array to pass on $slice projection values for offset and limit. Closes: #3811 Original pull request: #3812.
1 parent c3259e3 commit 7e94c1b

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

Diff for: spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Field.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.springframework.data.mongodb.core.query;
1717

18+
import java.util.Arrays;
1819
import java.util.HashMap;
1920
import java.util.Map;
2021
import java.util.Map.Entry;
@@ -192,7 +193,7 @@ public Field slice(String field, int size) {
192193
*/
193194
public Field slice(String field, int offset, int size) {
194195

195-
slices.put(field, new Integer[] { offset, size });
196+
slices.put(field, Arrays.asList(offset, size));
196197
return this;
197198
}
198199

Diff for: spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java

+17
Original file line numberDiff line numberDiff line change
@@ -3703,6 +3703,23 @@ public void sortOnIdFieldWithExplicitTypeShouldWork() {
37033703
assertThat(template.find(new BasicQuery("{}").with(Sort.by("id")), WithIdAndFieldAnnotation.class)).isNotEmpty();
37043704
}
37053705

3706+
@Test // GH-3811
3707+
public void sliceShouldLimitCollectionValues() {
3708+
3709+
DocumentWithCollectionOfSimpleType source = new DocumentWithCollectionOfSimpleType();
3710+
source.id = "id-1";
3711+
source.values = Arrays.asList("spring", "data", "mongodb");
3712+
3713+
template.save(source);
3714+
3715+
Criteria criteria = Criteria.where("id").is(source.id);
3716+
Query query = Query.query(criteria);
3717+
query.fields().slice("values", 0, 1);
3718+
DocumentWithCollectionOfSimpleType target = template.findOne(query, DocumentWithCollectionOfSimpleType.class);
3719+
3720+
assertThat(target.values).containsExactly("spring");
3721+
}
3722+
37063723
private AtomicReference<ImmutableVersioned> createAfterSaveReference() {
37073724

37083725
AtomicReference<ImmutableVersioned> saved = new AtomicReference<>();

0 commit comments

Comments
 (0)