我对RethinkDB很新,我正试图解决一个棘手的问题。
我有一个数据库,目前包括两种帐户,客户和技术人员。我想写一个查询,它将生成一个技术人员表,按他们与给定客户的距离排序。技术人员和客户帐户各自具有坐标位置属性,并且技术人员具有大致圆形坐标多边形形式的服务区域属性。
例如,返回一个技术人员表的查询,其服务区域与给定客户的位置重叠,如下所示:
r.db('database').table('Account')
.filter(r.row('location')('coverage').intersects(r.db('database')
.table('Account').get("6aab8bbc-a49f-4a9d-80cc-88c95d0bae8d")
.getField('location').getField('point')))
从这里开始,我想根据他们与客户重叠的距离订购技术人员的子表。
答案 0 :(得分:1)
如果没有样本数据集,很难解决这个问题,所以我可以玩游戏。我用我的想象力。
Account
表存储了客户和技术人员location.coverage
通过使用交叉,您可以返回覆盖位置包括客户位置的技术人员列表。
要订购它,我们可以将一个函数传递给orderBy
命令。对于每个技术人员,我们使用point
命令获取他们的distance
字段,返回该距离编号,并使用该编号进行订购。
r.db('database').table('Account')
.filter(
r.row('location')('coverage')
.intersects(
r.db('database').table('Account').get("6aab8bbc-a49f-4a9d-80cc-88c95d0bae8d")('location')('point')
)
)
.orderBy(function(technician) {
return technician('location')('point')
.distance(r.db('database').table('Account').get("6aab8bbc-a49f-4a9d-80cc-88c95d0bae8d")('location')('point'))
})
我希望它有所帮助。如果没有,请在此处发布一些示例数据,我们可以尝试一起解决。