Mongoose 查询最近 24 小时内获得点赞的文档

Posted

技术标签:

【中文标题】Mongoose 查询最近 24 小时内获得点赞的文档【英文标题】:Mongoose query for documents that got likes on last 24 hours 【发布时间】:2020-06-03 00:55:08 【问题描述】:

我有这个文章架构:

   var article  = new mongoose.Schema(

    ....

        likes: [
                    id: ObjectId,
                    by: type: ObjectId, ref: 'User',
                    created_at: type: Date, default: Date.now

         ],

....
, timestamps: createdAt: 'created_at');

我存储故事获得的喜欢。如您所见,likes 字段存储了喜欢文章的用户以及他们喜欢故事的时间。

现在我想查询过去 24 小时内获得赞的所有文章。猫鼬怎么可能做到这一点?

【问题讨论】:

【参考方案1】:

您可以使用 $max 获取最后一个类似日期,然后使用 $match 检查该日期是否大于 24 小时前:

Model.aggregate([
    
        $addFields: 
            lastDate:  $max: "$likes.created_at" 
        
    ,
    
        $match: 
            lastDate: 
                $gte: new Date(ISODate().getTime() - 1000 * 60 * 60 * 24 )
            
        
    
])

【讨论】:

这一次只获取一个条目吗? @AlvinZachariah 不,它应该返回在 24 小时前添加了至少一个赞的所有文章(将返回所有赞和其他文章字段)

以上是关于Mongoose 查询最近 24 小时内获得点赞的文档的主要内容,如果未能解决你的问题,请参考以下文章

列表和点赞的小项目

列表和点赞的小项目

列表和点赞的小项目

最近 24 小时的日期格式和获取结果表

V神点赞的数字货币交易所Blockchain.io已经获得美国证监会和法国央行许可,即将上线,中国大使招募中!

闭包的讲解及点赞的案例