mongoose/mongodb查询从javascript数组中的每个发送方获取最后一个文档

mongoose/mongodb query get last document from each sender inside javascript array

本文关键字:方获取 获取 文档 最后一个 查询 mongodb javascript 数组 mongoose      更新时间:2023-09-26

我有一个架构

var chatSchema = mongoose.Schema({
    sender:String,
    to:String,
    msg:String,
    msgType: Number,
    created: {type: Date, default: Date.now}
});

和模型

var Chat = mongoose.model('Message', chatSchema);

除此之外,我还有一个ID/名称数组

var idArray = [1,2,3,4,5];

我想做一个查询,从idArray 中获取每个发件人的最后一个文档

var query = Chat.find(
        {from: { $in: friendsOnline }},
        {created: { $last: "$created" }}
        });
query.exec(function (err,result){
        if(err){ console.log("Query error.");}
        else{
            if(result!=null) {console.log(JSON.stringify(result));}
            else{console.log('No results.');}
        }
});

类似的东西,但这显然不起作用

对于idArray中的每个发件人,您需要按发件人查找,限制为1个文档,并按创建时间排序:

var query = Chat.find({ 
    sender: idArray[0]
}).
limit(1).
sort( { created: -1 } ).
exec(yourCallback)