【发布时间】:2021-08-10 06:20:41
【问题描述】:
我正在尝试过滤 MongoDB 上用户集合中的对象数组。这个特定集合的结构如下所示:
name: "John Doe"
email: "john@doe.com"
progress: [
{
_id : ObjectId("610be25ae20ce4872b814b24")
challenge: ObjectId("60f9629edd16a8943d2cab9b")
date_unlocked: 2021-08-05T12:15:32.129+00:00
completed: true
date_completed: 2021-08-06T12:15:32.129+00:00
}
{
_id : ObjectId("611be24ae32ce4772b814b32")
challenge: ObjectId("60g6723efd44a6941l2cab81")
date_unlocked: 2021-08-06T12:15:32.129+00:00
completed: true
date_completed: 2021-08-07T12:15:32.129+00:00
}
]
date: 2021-08-04T13:06:34.129+00:00
如何使用 mongoose 查询数据库以仅返回具有最新 'date_unlocked' 的挑战?
我试过了:User.findById(req.user.id).select('progress.challenge progress.date_unlocked').sort({'progress.date_unlocked': -1}).limit(1);
但不是返回带有最近“date_unlocked”的单个挑战,而是返回整个用户进度数组。
任何帮助将不胜感激,在此先感谢您!
【问题讨论】:
-
@zr0gravity7 我已经通过尝试查询数据库更新了我的问题。我尝试过使用排序和限制,但没有任何乐趣!