MongoDB geoNear分页时返回空白
我正试图带回一个个人资料列表。这在find()中很有效 但我需要切换到聚合进行距离排序 现在不是每个人都能拿到20张我的100张唱片。我得了40分,剩下的好像都找不到了 有什么帮助吗? (是的,我试过使用一个简单的geoNear过滤器。结果相同)MongoDB geoNear分页时返回空白,mongodb,mongoose,ecmascript-6,mongodb-query,Mongodb,Mongoose,Ecmascript 6,Mongodb Query,我正试图带回一个个人资料列表。这在find()中很有效 但我需要切换到聚合进行距离排序 现在不是每个人都能拿到20张我的100张唱片。我得了40分,剩下的好像都找不到了 有什么帮助吗? (是的,我试过使用一个简单的geoNear过滤器。结果相同) 您是否可以共享跳过和限制值?另外,在跳过/限制之前添加$sort,以获得一致性result@Valijon . skip从0开始,每次通话都会上升。上限是20。排序不是最后一个吗?我明白了。排序应在跳过/限制之前。请分享样品data@Valijon.
您是否可以共享
跳过
和限制
值?另外,在跳过/限制之前添加$sort
,以获得一致性result@Valijon . skip从0开始,每次通话都会上升。上限是20。排序不是最后一个吗?我明白了。排序应在跳过/限制之前。请分享样品data@Valijon. 我删除了排序和相同的结果。Im通过获取它创建的数组的长度进行测试。我已经把范围缩小到了讨论这个问题的范围。如果没有它,我将使用匹配/跳过/限制直到整个结果计数。当我使用geo时,它会停在117个中的45个。更新:我只使用了match和geoNear进行了测试。geoNear似乎只返回45个结果,而没有它,则返回118个
await Profile.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [long, lat]
},
distanceMultiplier:
req.user.distanceMetric === "km" ? 0.001 : 0.000621371, // meter to ki:miles
distanceField: "distance",
spherical: true,
maxDistance: distance !== 100 ? distance * 1609.34 : 99999999999
}
},
{
$match: {
$and: [
{
_id: {
$ne: Profile.castID(req.user.profileID),
$nin: doNotDisplayList.map(id => Profile.castID(id))
}
}
]
}
},
{ $skip: skip },
{ $limit: limit }
]).sort({
online: -1
});