"express": "^4.18.2",
"mongodb": "^5.6.0",
"mongoose": "^7.2.2",
我有一个运行在Node之上的Express上的服务器,并使用Mongoose来处理MongoDB。我在MongoDB中的一个集合有这样的结构:
[
...
...
...,
{
_id: 64817b7d47af9b7e12e6cb5b
userId: 647f8f9037c28e47a23c02c0
flips: 19
milliseconds: 18616
updatedAt: 2023-06-12T10:00:40.833+00:00
__v: 0
},
{
_id: 64817b7d47af9b7e12e6cb5c
userId: 647f8f9037c28e47a23c02c0
flips: 20
milliseconds: 18616
updatedAt: 2023-06-12T10:00:40.833+00:00
__v: 0
},
{
_id: 64817b7d47af9b7e12e6cb5d
userId: 647f8f9037c28e47a23c02c1
flips: 19
milliseconds: 18616
updatedAt: 2023-06-12T10:00:40.833+00:00
__v: 0
},
{
_id: 64817b7d47af9b7e12e6cb5e
userId: 647f8f9037c28e47a23c02c1
flips: 19
milliseconds: 18716
updatedAt: 2023-06-12T10:00:40.833+00:00
__v: 0
},
...
...
...
]
此集合保留了所有用户的5个最佳分数。
我想要的是做一个查询,要求Mongoose根据毫秒为每个userId返回最佳分数。如果毫秒相等,则基于翻转,如果翻转相等,则基于首先插入的文档。我尝试使用aggregation和$group来为每个userId保留一个唯一的记录,但不知道如何添加条件。这是可能的,如果是的,我可以在此分页吗?
1条答案
按热度按时间06odsfpq1#
在这种情况下,它可以工作,但不完全相同,因为我希望结果基于相同的标准进行排序,因为我还想使用分页。