У меня есть код ниже для сопоставления полей с проекцией.
private static ProjectionOperation getProjectionOperation() {
Cond conditional = ConditionalOperators.when(Criteria.where("joined.isHeaderDocument").is(Boolean.TRUE)).thenValueOf("documentID").otherwise(null);
ProjectionOperation projectOperation = Aggregation.project(
.and("doc").as("relationshipNumber")
.and(conditional).as("headerForm");
return projectOperation;
Мне нужно вернуть значение documentID, когда isHeaderDocument равно true, иначе мне не следует сопоставлять поле «headerForm». Я получаю исключение типа "null values not supported for conditional operators". Может кто-нибудь, пожалуйста, помогите

в противном случае требуется ненулевой параметр, поэтому вы видите эту ошибку.
Вместо того, чтобы присваивать полю значение null, вам нужно удалить поле, если условие не выполнено, с помощью $$REMOVE. Ваш собственный запрос должен быть
{
"$cond": {
"if": {"$eq": ["$joined.isHeaderDocument", true]},
"then": "$documentID",
"else": "$$REMOVE"
}
}
Спрингбут:
Cond conditional = ConditionalOperators.when(
Criteria.where("joined.isHeaderDocument").is(Boolean.TRUE))
.thenValueOf("documentID").otherwise(Aggregation.REMOVE);
ConditionalOperators. ... .otherwise(null)- возможно, в этом причина.