一尘不染

使用node.js从MongoDB中选择最后N条记录

node.js

注意:我看过 其他问题,并尝试过从中得出的答案,但是没有运气。

我在MongoDB中有一个集合:

{ _id: 1, category_id: 1, time_added: 1234567890, name: "abc" }

我需要找到category_id等于 10的 最后10个条目。听起来简单吗?

collection.find({ 'category_id': 10 }, {}, { _id: -1, limit : 10}, function (e, d) {});

但是运行该命令可以得到 10条记录,而不是最后10条记录。看起来驱动程序的优先级为“ limit”而不是“ sorting”
…我也尝试$natural并进行排序time_added。每当我从命令行运行相同的查询时,我都会得到所需的信息。这是我在命令行中键入的内容:

collection.find({ 'category_id': 10 }).sort({_id: -1}).limit(10)

我究竟做错了什么?有没有其他方法可以使用node.js做到这一点?


阅读 258

收藏
2020-07-07

共1个答案

一尘不染

事实证明,node.js接受功能调用的方式与命令行界面相同。每个函数都有最后一个可选参数作为回调函数。因此,此代码运行并返回正确的结果:

collection.find({ 'category_id': 10 }).sort({_id: -1}).limit(10, function (e, d) {})
2020-07-07