我正在尝试编写一个查询来查找集合中的所有文档,其中“日期”<当前日期,标志 = true,按日期排序(降序)并将结果限制为(例如)10 个文档,然后选择所有剩余的集合中的文档(满足日期和标志条件)以执行更新。SQL 等效项是:
SELECT * FROM TABLE
WHERE DATE < SYSDATE
AND FLAG = TRUE
MINUS
SELECT * FROM TABLE
WHERE DATE < SYSDATE
AND FLAG = TRUE
ORDER BY DATE DESC
LIMIT 10
到目前为止,我有:
db.scratch.aggregate(
[
{ $match: { flag: true, date: { $lt: new Date() } } },
{ $sort: { date: -1 } },
{ $limit: 10 }
]
)
是否可以在数据库中进行减法,或者我唯一的选择是在客户端处理两个查询的结果?