如何在mongoose中找到数组中的最新数据

时间:2017-08-20 23:57:50

标签: node.js mongodb mongoose mongoose-schema mongoose-populate

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

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中获取最新消息,但无法弄清楚如何做到这一点。任何想法?

1 个答案:

答案 0 :(得分:0)

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

所以通过添加类似:{ _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()
})