MongoDB聚合结果差异

MongoDB aggregation result difference

我正在尝试编写查询以查找集合中所有文档 'date' < 当前日期,标志 = true,按日期排序(降序)并将结果限制为(例如)10文档,然后 select 集合中所有 remaining 个文档(满足日期和标记条件)以执行更新。 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 }
  ]
)

是否可以在数据库中进行减法,或者我唯一的选择是在客户端处理两个查询的结果?

这实际上只是一个简单的查询,因为 MINUS 只是执行 "exclusion",而您真正要说的全部归结为 "exclude the first 10 results by these criteria" .

db.scratch.find({ "date": { "$lt": new Date() }, "flag": true })
  .sort({ "date": -1 }).skip(10);

所以 "limit the first 10 and then exclude those results from the overall" 基本上减少到 SKIP,基于相同的标准。