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 小时内获得点赞的文档的主要内容,如果未能解决你的问题,请参考以下文章