注意:我看过other question并尝试过它的答案,但是没有运气。
我在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个记录。看来驱动程序具有“限制”而不是“排序”的优先级...我也尝试使用
$natural
和time_added
进行排序。每当我从命令行运行相同的查询时,我都会得到所需的信息。这是我在命令行中键入的内容:collection.find({ 'category_id': 10 }).sort({_id: -1}).limit(10)
我究竟做错了什么?是否有其他方法可以使用node.js做到这一点?
最佳答案
事实证明,node.js接受功能调用的方式与命令行界面相同。每个函数都有最后一个可选参数作为回调函数。因此,此代码运行并返回正确的结果:
collection.find({ 'category_id': 10 }).sort({_id: -1}).limit(10, function (e, d) {})