Skip to content

Commit 2a45a43

Browse files
authored
Merge pull request #285 from eclipse/evolute-not-query-mongo-db
Enhance query to mongodb
2 parents 99f2bf4 + d0fd0b1 commit 2a45a43

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

jnosql-mongodb/src/main/java/org/eclipse/jnosql/databases/mongodb/communication/DocumentQueryConversor.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.mongodb.client.model.Filters;
2020
import org.bson.conversions.Bson;
21+
import org.eclipse.jnosql.communication.Condition;
2122
import org.eclipse.jnosql.communication.TypeReference;
2223
import org.eclipse.jnosql.communication.ValueUtil;
2324
import org.eclipse.jnosql.communication.semistructured.CriteriaCondition;
@@ -43,7 +44,17 @@ public static Bson convert(CriteriaCondition condition) {
4344
List<Object> inList = ValueUtil.convertToList(document.value());
4445
yield Filters.in(document.name(), inList.toArray());
4546
}
46-
case NOT -> Filters.not(convert(document.get(CriteriaCondition.class)));
47+
case NOT -> {
48+
var criteriaCondition = document.get(CriteriaCondition.class);
49+
if (Condition.EQUALS.equals(criteriaCondition.condition())) {
50+
Element element = criteriaCondition.element();
51+
if(element.get() == null) {
52+
yield Filters.exists(element.name(), true);
53+
}
54+
yield Filters.ne(element.name(), element.get());
55+
}
56+
yield Filters.not(convert(criteriaCondition));
57+
}
4758
case LIKE -> Filters.regex(document.name(), value.toString());
4859
case AND -> {
4960
List<CriteriaCondition> andList = condition.element().value().get(new TypeReference<>() {

0 commit comments

Comments
 (0)