<分区>
我有一组用户,每个用户都有一个点属性(见下面的架构)。
我的最终目标是根据特定用户位置返回经过排序的有限文档数组,或者换句话说,返回与特定用户位置相关的排行榜的一小部分。
目前我查询并排序所有用户,在返回的数组中找到我想要的用户并根据该数组对数组进行切片。我想知道是否有一个查询可以避免我返回所有用户。
示例用户架构:
/* 1 */
{
"_id" : ObjectId("..."),
"points" : 5852 ,
"key" : "user1"
}
/* 2 */
{
"_id" : ObjectId("..."),
"points" : 3835,
"key" : "user2"
}
/* 3 */
{
"_id" : ObjectId("..."),
"points" : 1984,
"key" : "user3"
}
/* 4 */
{
"_id" : ObjectId("...."),
"points" : 2437,
"key" : "user4"
}
假设我希望查询返回 3 个按点排序的文档 - “user4”(我的亲属用户)的文档,排行榜中他之后的文档(上例中的“user3”)和他之前的1个文档(上例中的“user2”)
谢谢!
编辑:如果这可以简化事情,我也会使用 mongoose。
Edit2: 请看下面的预期输出 -
/* 1 */
{
"_id" : ObjectId("..."),
"points" : 3835,
"key" : "user2"
}
/* 2 */
{
"_id" : ObjectId("...."),
"points" : 2437,
"key" : "user4"
}
/* 3 */
{
"_id" : ObjectId("..."),
"points" : 1984,
"key" : "user3"
}
请注意,“user1”不会出现在输出中,因为查询要求 1 个用户排名高于“user4”,1 个用户排名低于“user4”