Я создаю веб-приложение, и оно отлично работает, но конечному пользователю необходимо создать отчет на основе его данных.
На странице отчета я создал несколько текстовых полей, которые пользователи будут вводить для фильтрации. Эти поля TXT могут быть пустыми, и мне нужно вернуть все из БД, или некоторые параметры могут быть заполнены. Вспоминая, что мне нужно передавать содержимое текстовых полей в качестве параметров JasperServer, и они будут использоваться в запросе.
Пример ввода данных:
txtName= empty (null),
txtCity= 'Belo Horizonte'
Он должен генерировать отчет со всеми записями людей о том, как живет в Белу-Оризонти, независимо от имени.
Я сделал это на SQL и отлично работает. После того, как я попытался использовать ту же логику на монго, но она не работает. Я пробовал с $ lt, $ gt, $ lte, $ gte, $ Существовать, $ ne и другими инструментами агрегации, и я не смог сделать это правильно.
SQL:
select * from myfirstreports
where ($P{city} is null or cidade =$P{city})
AND ($P{name} is null or nome =$P{name})
Монго:
{
'collectionName' : 'myfirstreports',
'findFields' :
{
'nome': 1, 'numeros': 1, 'vulgo': 1, 'cidade': 1,
'usuResponsavelCadastro': 1, 'created_at': 1
},
findQuery :
{
$and: [
{$or:[{ $P{city}: {$eq: null}}, {'cidade': $P{city}}]},
{ $or:[{$P{name}: {'$eq': null}}, {'nome': $P{name}}]}
]
}
}