in flink-connector-mongodb/src/main/java/org/apache/flink/connector/mongodb/table/MongoFilterPushDownVisitor.java [65:102]
public BsonDocument visit(CallExpression call) {
Bson filter = Filters.empty();
if (BuiltInFunctionDefinitions.EQUALS.equals(call.getFunctionDefinition())) {
filter = renderBinaryComparisonOperator("$eq", call.getResolvedChildren());
}
if (BuiltInFunctionDefinitions.LESS_THAN.equals(call.getFunctionDefinition())) {
filter = renderBinaryComparisonOperator("$lt", call.getResolvedChildren());
}
if (BuiltInFunctionDefinitions.LESS_THAN_OR_EQUAL.equals(call.getFunctionDefinition())) {
filter = renderBinaryComparisonOperator("$lte", call.getResolvedChildren());
}
if (BuiltInFunctionDefinitions.GREATER_THAN.equals(call.getFunctionDefinition())) {
filter = renderBinaryComparisonOperator("$gt", call.getResolvedChildren());
}
if (BuiltInFunctionDefinitions.GREATER_THAN_OR_EQUAL.equals(call.getFunctionDefinition())) {
filter = renderBinaryComparisonOperator("$gte", call.getResolvedChildren());
}
if (BuiltInFunctionDefinitions.NOT_EQUALS.equals(call.getFunctionDefinition())) {
filter = renderBinaryComparisonOperator("$ne", call.getResolvedChildren());
}
if (BuiltInFunctionDefinitions.IS_NULL.equals(call.getFunctionDefinition())) {
filter =
renderUnaryComparisonOperator(
"$eq", call.getResolvedChildren().get(0), BsonNull.VALUE);
}
if (BuiltInFunctionDefinitions.IS_NOT_NULL.equals(call.getFunctionDefinition())) {
filter =
renderUnaryComparisonOperator(
"$ne", call.getResolvedChildren().get(0), BsonNull.VALUE);
}
if (BuiltInFunctionDefinitions.OR.equals(call.getFunctionDefinition())) {
filter = renderLogicalOperator("$or", call.getResolvedChildren());
}
if (BuiltInFunctionDefinitions.AND.equals(call.getFunctionDefinition())) {
filter = renderLogicalOperator("$and", call.getResolvedChildren());
}
return filter.toBsonDocument();
}