我的猫鼬在Node.JS / Discord.JS上搜索了一个文档,并且将其排序为filter ()
,它仍然发送数据库中最旧的文档。
这是我的代码,我在做什么错了?
{ date: -1 }
以下是上面使用的架构:
gLog.
findOne({ "GiveawayHostID": name }).
sort({ date: -1}).
exec(function (err, host) {
答案 0 :(得分:1)
似乎您的架构中没有date
字段,因此猫鼬无法按日期排序。您可以按时间排序:
findOne({ "GiveawayHostID": name }).
sort({ time: -1}).
exec(function (err, host) {
但是,由于您的time
字段被标记为String
,因此这可能不会返回预期的结果。因此,猫鼬会按照字母顺序对您的时间进行排序。
要解决此问题,您可以将time
变量更改为timestamp
格式。否则,您需要将date
字段添加到架构中,并遵循this example。
答案 1 :(得分:0)
您可以按 _id 字段对其进行排序,这是一种以时间戳记开头的BSON数据类型,因此您可以通过插入时间戳记对其进行排序,如果不这样做,它将始终为您提供最新记录创建您的自定义_id并让mongodb创建一个查看更多信息here
所以您要做的就是:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
googleId:String,
userName:String,
userDp:String,
savedPlace: [{ type: mongoose.Schema.Types.ObjectId, ref: "Place" }]
});
mongoose.model('users', userSchema);
只需引用文档中的重要内容即可:
ObjectId很小,可能是唯一的,可以快速生成并排序。 ObjectId值由12个字节组成,其中前四个字节为 反映ObjectId创建的时间戳。具体来说:
- 4个字节的值,表示自Unix时代以来的秒数,
- 5字节随机值,和
- 3字节计数器,以随机值开头。