MongoDB聚合结果差异

时间:2017-11-08 23:07:29

标签: mongodb nosql aggregation-framework nosql-aggregation

我尝试撰写查询,以便使用' date'来查找集合中的所有文档。 < current date,flag = 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 }
  ]
)

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

1 个答案:

答案 0 :(得分:0)

这实际上只是一个简单的查询,因为MINUS只是做了一个“排除”,而你真正说的只是归结为“按这些标准排除前10个结果”。 / p>

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

所以“限制前10个,然后从整体中排除那些结果”基本上按照相同的标准减少到SKIP。