我是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')))
从这里,我想要根据技术人员到他们重叠的客户的距离对得到的技术人员子表进行排序。
发布于 2015-08-28 14:28:11
在没有样本数据集的情况下,很难做到这一点,这样我就可以发挥作用了。我在发挥我的想象力。
具有字段location.coverage
的
Account
表存储了customer和has文档通过使用intersect,您可以返回覆盖地点包括客户地点的技术人员列表。
要对其进行排序,我们可以将一个函数传递给orderBy
命令。对于每个技术人员,我们使用distance
命令获取他们的point
字段,返回距离数字,并使用该数字进行排序。
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'))
})
我希望它能帮上忙。如果没有,让我们在这里发布一些示例数据,我们可以一起试着弄清楚。
https://stackoverflow.com/questions/32261385
复制相似问题