下面代码中的latitude和longitude是被查询的数据中的字段,能否提取出来进行操作(目的是计算距离,选取距离合适的数据)。 wx.cloud.database().collection(‘space’).where( wx.cloud.database().command.and( { category: ‘huixun’ }, { radius: wx.cloud.database().command.lt(this.getDistance(this.data.latitude, this.data.longitude, latitude, longitude)) } ) )
看下这个文档https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.geoNear.html
const db = wx.cloud.database()
const $ = db.command.aggregate
db.collection('yourCollection').aggregate()
.geoNear({
distanceField: 'distance', // 输出的每个记录中 distance 即是与给定点的距离
spherical: true,
near: db.Geo.Point(yourLongitude, yourLatitude), // 你的经纬度
query: {
docType: 'geoNear',
},
key: 'location', // 若只有 location 一个地理位置索引的字段,则不需填
includeLocs: 'location', // 若只有 location 一个是地理位置,则不需填
})
.end()
研究了Rui兄推荐的文档,感觉只有使用聚合函数才能获取正在查询的数据中的字段,所以改了一下,选择保持用where查询(单纯用聚合方式查询看不太懂),在where语句中插入聚合的函数,这样就能调取数据中的字段名了(下面代码中的'$radius', ‘$latitude', '$longitude')。感谢大佬帮助!