Поскольку вы можете использовать MongoDB 4.0.1, вы можете использовать $expr
для получения желаемого результата.
Требуемый запрос будет выглядеть следующим образом:
db.criteria.find( { $expr: { $eq: [ "$goal.currentValue" , "$goal.goal" ] } } )
или, есливам нужно текущее значение как 50% от цели
db.criteria.find( { $expr: { $eq: [ "$goal.currentValue" , {divide : ["$goal.goal",2]} ] } } )
Я не знаю Spring, и как mongodb используется с Spring, поэтому я дал ответ в Mongo Shell.Вы можете написать синтаксис в Spring MongoTemplate.Идея состоит в том, чтобы использовать $expr
для использования полей документа в состоянии соответствия.
для получения дополнительной информации читайте Официальная документация $ expr MongoDB .
Обновление :
Синтаксис MongoTemplate для этого же может выглядеть следующим образом (не проверено):
BasicQuery query1 = new BasicQuery("{ $expr: { $eq: [ '$goal.currentValue' , '$goal.goal' ] } }");
List<Document> = mongoOperation.find(query1, Document.class);
Попробуйте и скажите, есть ли какая-либо ошибка в приведенном выше запросе.Я только что попытался написать его в нужном вам синтаксисе.