Можем ли мы выполнить сравнение между двумя полями документа в mongodb с помощью запроса db.getCollection.find? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть коллекция в 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...