【问题标题】:Mongoose query for documents that got likes on last 24 hoursMongoose 查询最近 24 小时内获得点赞的文档
【发布时间】: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 小时内获得赞的所有文章。猫鼬怎么可能做到这一点?

【问题讨论】:

    标签: javascript node.js database mongodb mongoose


    【解决方案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 小时前添加了至少一个赞的所有文章(将返回所有赞和其他文章字段)
    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 2015-09-19
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    相关资源
    最近更新 更多