unicloud-db组件中,可以用geoNear查询数据吗?用clientDB,却报首个project方法内仅可使用白名单模式,不知哪里有错,望指点!
代码如下(home表中author外键uni-id-users表_id字段):
const db = uniCloud.database();
const $ = db.command.aggregate
const dbCmd = db.command;
let res = await db.collection('home').aggregate()
.geoNear({
distanceField: 'distance',
spherical: true,
near: new db.Geo.Point(120.900134,31.975989)
})
.lookup({
from: 'uni-id-users',
let: {
home_author: '$author'
},
pipeline: $.pipeline()
.match(dbCmd.expr($.eq(['$_id', '$$home_author'])))
.project({
_id: 0,
password: 0
})
.done(),
as: 'authorList',
})
.replaceRoot({
newRoot: $.mergeObjects([ $.arrayElemAt(['authorList', 0]), '$$ROOT' ])
})
.project({
authorList: 0
})
.end()
1***@qq.com
- 发布:2022-06-24 19:00
- 更新:2022-06-29 14:48
- 阅读:616
1***@qq.com (作者)
被回复到,太开心了!这几天一直看官方文档,同时寻找其它可能给启示的资料,睡觉也在想如何解决,今天看到这个解答,试了一下,解决了,太感谢了,谢谢,山重水复疑无路,柳岸花明又一村!
2022-07-05 16:13