当前位置: 首页 > 面试题库 >

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

吕霄
2023-03-14
问题内容

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

我在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做到这一点?


问题答案:

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

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


 类似资料:
  • 我想从MySQL数据库中选择最后50行,列名为id,这是主键。目标是行应该按照ASC顺序按id排序,这就是为什么这个查询不起作用 同样值得注意的是,行可以被操纵(删除),这就是为什么下面的查询也不起作用 问题:如何从MySQL数据库中检索最后N行,这些行可以被操作并按ASC顺序排列?

  • 问题内容: 我想在名为 id的 列( 主键)中 从MySQL数据库中选择最后50行。目标是行应该被分类 ID 在 ASC 秩序,这就是为什么这个查询不工作 同样值得注意的是,可以对行进行操作(删除),这就是为什么以下查询也不起作用的原因 问题 :如何从MySQL数据库中检索可以操纵并按ASC顺序排列的最后N行? 问题答案: 您可以使用子查询来做到这一点: 这将从中选择 最后 50行,然后按升序对其

  • 问题内容: 我试图从看起来像这样的数据库表结果中选择前2条记录 我试过这个查询 但是有些主题,例如失踪的地方,我什至尝试了以下链接的建议 如何选择每个组的前N行? 但是我为每个受检者得到两个以上 我究竟做错了什么? 问题答案: 您可以使用相关的子查询: 该查询通过串联三列来构造单列主键。如果您有真正的主键(如),则可以用代替。 SQL Fiddle中的示例。

  • 问题内容: 我有一个带有索引(自动递增)和整数值的表。该表长百万行。 如何搜索某个数字是否最有效地出现在表的最后n行中? 问题答案: 从@chaos给出的答案开始,但进行了一些修改: 如果使用,则应始终使用。对于RDBMS表,没有保证的隐式顺序。 通常, 您可能 会 按主键的顺序获得行,但是您不能依靠它,也不是可移植的。 如果按降序排列,则无需事先知道表中的行数。 您必须为派生表指定一个 相关名称

  • 问题内容: 我有一张桌子,上面有几条记录。有一个ID字段。我想选择具有最新ID(即最高ID)的记录。 有任何想法吗? 问题答案:

  • 问题内容: 我有超过35列的表,前20列是固定的,并且每个表中的列号都不同。我需要从表中选择最后10列,例如,我该如何实现?就像此查询返回前20条记录 我想对列执行相同的操作,即在查询中返回列名称,然后在其他查询中使用这些名称,例如: 问题答案: 您可以通过准备好的语句来实现。您的查询将如下所示: -这将创建一个内容如下的SQL: (在样品上方我不得不选择在2列中,可在该部分进行调整:) 因此,您