【问题标题】: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 个文档,而不是最新的文档
有什么办法可以解决这个问题?
【问题讨论】:
标签:
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 })