У меня есть коллекция в mongodb, такая же как в SQL,
Orders[orderId, ... ,status, orderDate, expiredTimeInSeconds].
Мне нужно найти все просроченные ордера, то есть ордера с (orderDate + expiredTimeInSeconds)> current_date.
Я использовал следующий запрос, чтобы получить первые 100 записей, удовлетворяющих вышеуказанным критериям,
db.getCollection('orders').aggregate(
[
{ $match : {status:"C"}},
{ $addFields: {expiryDate: { $add: [ "$orderDate", {$multiply:["$expiredTimeInSecond",1000]} ] } } },
{ $match : {expiryDate: { $gt : new Date()}}},
{ $limit : 100 }
]
)
Но проблема в том, что агрегаты отнимают много времени для работы с огромной базой данных, может ли это быть достигнуто с использованием меньшего количества временипотребляет запрос / функцию mongoDB?
PS Предпочтителен, если запрос имеет поддержку Java.