如何在猫鼬中查找数组中的最新数据

How to find a latest data in array in mongoose

我有一个如下的对话模型:

const ConvoSchema = mongoose.Schema({
    convoId: {
        type: String,
        required: true
    },
    seller: {
        type: String,
        required: true
    },
    buyer: {
        type: String,
        require: true
    },
    product: [{ type: Schema.Types.ObjectId, ref: 'Post' }],
    messages: [{ type: Schema.Types.ObjectId, ref: 'Message' }]
})

我正试图在 Convo 中获取最新消息,但不知道该怎么做。有什么想法吗?

_id 基本上包含其中的时间戳,因此您在 .find() 中获得的第一个元素将是 oldest,最后一个元素将是最新,

所以通过添加这样的排序:{ _id: -1} 会给你最新的数据

var Convo = mongoose.model('Convo', ConvoSchema); //init mongoose model

Convo.find()
     .limit(1)
     .sort({ _id: -1 })

如果您想要完整的文档列表,您可以删除 .limit()

============================================= ==========================

抱歉没有正确阅读,

最新消息,

Convo.findOne({}, response => {
   var data = response.toObject();
   latestMessage = data.messages.pop()
})