支付宝云地理位置索引new dbJQL.Geo.Point在uni-app中检索不出内容索引也正确进行了创建
支付宝云地理位置索引new dbJQL.Geo.Point在uni-app中检索不出内容索引也正确进行了创建
操作步骤:
- 运行上面代码
预期结果:
- 获取满足地理位置条件的数据
实际结果:
- 地理位置索引不起作用
bug描述:
经测试,同样的代码和索引,在阿里云服务空间可以,但是在支付宝服务空间就检出不出地理位置。
let [longitude,latitude]=location;
pageSize = Math.min(100,pageSize);
pageCurrent = (pageCurrent - 1) * pageSize;
let {data:[{code=null}={}]=[]} = await dbJQL.collection('JLJ-merchant-list').aggregate()
.geoNear({
distanceField: 'distance', // 输出的每个记录中 distance 即是与给定点的距离
spherical: true,
near: new dbJQL.Geo.Point(longitude,latitude)
})
.limit(1)
.project({
area:$.arrayElemAt(['$area', 1])
})
.project({
code:"$area.code"
})
.end();
return code;
[
{
"IndexName": "location",
"MgoKeySchema": {
"MgoIndexKeys": [
{
"Name": "location",
"Direction": "2dsphere",
"Type":"point"
}
],
"MgoIsUnique": false
}
}
]
更多关于支付宝云地理位置索引new dbJQL.Geo.Point在uni-app中检索不出内容索引也正确进行了创建的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
已确认bug,等待支付宝云修复
2025-06-06
支付宝反馈已修复,你可以看下是否正常了
更多关于支付宝云地理位置索引new dbJQL.Geo.Point在uni-app中检索不出内容索引也正确进行了创建的实战教程也可以访问 https://www.itying.com/category-93-b0.html
可以查询出来了,但是geoNear聚合阶段中maxDistance属性好像有问题,.limit(1) 去掉后,我的理解是将这个值设置的大一些,是不是应该会获取多个地址,现在是无论将这个值调多大,都还是一个
根据您描述的情况,支付宝云服务空间与阿里云服务空间在地理位置索引查询上存在差异。以下是可能的原因和解决方案:
- 索引创建问题:
- 确认支付宝云服务空间的索引确实已创建成功,可以通过控制台查看索引状态
- 支付宝云可能对地理位置索引的实现有特殊要求
- 代码调整建议:
// 尝试显式指定距离单位(米)
.geoNear({
distanceField: 'distance',
spherical: true,
near: new dbJQL.Geo.Point(longitude, latitude),
distanceMultiplier: 1, // 明确指定距离单位为米
maxDistance: 10000 // 添加最大距离限制
})
- 数据格式检查:
- 确保location字段存储的是GeoJSON格式,如:
{
"location": {
"type": "Point",
"coordinates": [经度, 纬度]
}
}