Я пытаюсь сделать условный поиск в MongoDB.
Дана коллекция со следующими полями:
itemId: Long
itemName: String
unconsumed: Boolean
snooze: Boolean
expiryTs: Long
Я хочу найти все элементы в зависимости от того, являются ли они unconsumed
, в зависимости от snooze
срок действия должен быть условно оценен, например:
if (snooze)
expiryTs < now + 1
else
expiryTs < now + 2
Я использую KMongo для запроса коллекции, но со следующим запросом
collection.find(and(PantryDomain::unconsumed eq true,
expr(cond(PantryDomain::snooze eq true,
PantryDomain::expiryTs lt Instant.now().plus(1, ChronoUnit.DAYS).toEpochMilli(),
PantryDomain::expiryTs lt Instant.now().plus(2, ChronoUnit.DAYS).toEpochMilli()))))
Я получаю эту ошибку:
com.mongodb.MongoQueryException: Query failed with error code 16020 and error message 'Expression $lt takes exactly 2 arguments. 1 were passed in.' on server localhost:27017
Есть идеи, что не так с запросом? Спасибо: -)