【问题标题】:Get the latest 50 documents with .find() in mongodb (monk)在mongodb(monk)中用.find()获取最新的50个文档
【发布时间】:2020-07-01 10:34:13
【问题描述】:

我正在尝试使用该行获取最新的 50 个文档

const msgs = await messages.find({ 'group': this.id }, { limit: 50 })

但这只会获取最旧的 50 个文档,而不是最新的文档

有什么办法可以解决这个问题?

【问题讨论】:

  • 需要先对_id进行降序排序

标签: javascript node.js database mongodb monk


【解决方案1】:

您缺少指示创建文档的时间范围的行,例如sort: {'createdAt': 'desc'}

这将允许您根据创建日期(应为Date 类型)仅获取最新的 50 个文档。

否则,您将需要使用一些其他属性来指示创建文档的顺序(id 通常是随机值,因此使用它进行排序不会按预期工作)。


messages.find({ 'group': this.id })
.sort({'createdAt': 'desc'})
.limit(50)
.then(msgs => {
  console.log(msgs)
});

const msgs = await messages.find({ 'group': this.id }, { sort: {'createdAt': 'desc' }, limit: 50 })

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 2016-05-25
    • 2018-09-04
    • 2014-09-26
    • 1970-01-01
    相关资源
    最近更新 更多