Skip to content

Commit 3b28684

Browse files
committed
JAVA-2349: Handle null values in DBCollection distinct implementation
1 parent dc90603 commit 3b28684

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

driver/src/main/com/mongodb/DBCollection.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,6 +1182,9 @@ public List distinct(final String fieldName, final DBCollectionDistinctOptions o
11821182
.map(new Function<BsonValue, Object>() {
11831183
@Override
11841184
public Object apply(final BsonValue bsonValue) {
1185+
if (bsonValue == null) {
1186+
return null;
1187+
}
11851188
BsonDocument document = new BsonDocument("value", bsonValue);
11861189
DBObject obj = getDefaultDBObjectCodec().decode(new BsonDocumentReader(document), DecoderContext.builder().build());
11871190
return obj.get("value");

driver/src/test/functional/com/mongodb/DBCollectionFunctionalSpecification.groovy

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -338,18 +338,17 @@ class DBCollectionFunctionalSpecification extends FunctionalSpecification {
338338
def 'should return distinct values of differing types '() {
339339
given:
340340
collection.drop()
341-
def documents = [~['id' :'a'], ~['id' : 1],
341+
def documents = [~['id' : null], ~['id' :'a'], ~['id' : 1],
342342
~['id' : ~['b': 'c']], ~['id' : ~['list': [2, 'd', ~['e': 3]]]]]
343343

344344
collection.insert(documents)
345-
assert collection.count() == 4;
346345

347346
when:
348347
List distinctValues = collection.distinct('id')
349348

350349
then:
351-
distinctValues.size() == 4
352-
that distinctValues, contains('a', 1, ~['b': 'c'], ~['list': [2, 'd', ~['e': 3]]])
350+
distinctValues.size() == 5
351+
that distinctValues, contains(null, 'a', 1, ~['b': 'c'], ~['list': [2, 'd', ~['e': 3]]])
353352
}
354353

355354
@SuppressWarnings('UnnecessaryObjectReferences')

0 commit comments

Comments
 (0)