首页 > 解决方案 > 如何只显示最新的文档?

问题描述

我让猫鼬在 Node.JS/Discord.JS 上搜索一个文档,我对其进行了排序{ date: -1 },它仍然发送数据库中最旧的文档。
这是我的代码,我做错了什么?

gLog.
  findOne({ "GiveawayHostID": name }).
  sort({ date: -1}).
  exec(function (err, host) {

这是上面使用的架构:

const mongoose = require("mongoose");
const gLogSchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  GiveawayHost: String,
  GiveawayHostID: String,
  Prize: String,
  WinnerUsername: String,
  WinnerUsernameID: String,
  time: String
});
module.exports = mongoose.model("GiveawayLogs", gLogSchema)

标签: node.jsmongodbmongoosediscord.js

解决方案


您的架构中似乎没有date字段,因此 mongoose 无法按日期排序。您可以按时间排序:

findOne({ "GiveawayHostID": name }).
sort({ time: -1}).
exec(function (err, host) {

但是,这可能不会返回预期结果,因为您的time字段被标记为String. 所以猫鼬会按字母顺序对你的时间进行排序。

要解决此问题,您可以将time变量更改为一种timestamp格式。否则,您需要将该date字段添加到您的架构中并按照此示例进行操作。


推荐阅读