携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
-
INTERSECTS
搜索包含在区域内的数据对象或与指定边界区域相交的数据对象;
INTERSECTS key [CURSOR start] [BUFFER meters] [LIMIT count] [MATCH pattern] [WHERE field min max ...] [WHEREIN field count value [value...] ...] [WHEREEVAL script numargs arg [arg...] ...] [WHEREEVALSHA sha1 numargs arg [arg...] ...] [CLIP] [NOFIELDS] [FENCE] [DETECT what] [COMMANDS which] [COUNT|IDS|OBJECTS|POINTS|BOUNDS|(HASHES precision)] (GET key id)|(BOUNDS minlat minlon maxlat maxlon)|(OBJECT geojson)|(CIRCLE lat lon meters)|(TILE x y z)|(QUADKEY quadkey)|(HASH geohash)|(SECTOR lat lon meters bearing1 bearing2)CURSOR:从搜索结果中的第几个索引位开始返回结果;
BUFFER:围绕搜索区域增加缓冲区;在WITHIN和INTERSECTS命令中使用;
LIMIT:限制查询结果的返回数量,默认是100;
MATCH:使用正则表达式匹配
id;相当于对id的条件查询;WHERE:条件语句,
WHERE speed 70 +inf WHERE age -inf 24相当于查询速度大于70,并且年龄小于24的结果;WHEREIN:条件语句,
where wheels 3 14 18 22相当于查询wheels的值在14或18或22的数据,其中参数3代表后面数字的个数;WHEREEVAL:条件语句,和
WHERE类似,不过这个查询可以使用LUA脚本;whereeval "return FIELDS.wheels > ARGV[1] or (FIELDS.length * FIELDS.width) > ARGV[2]" 2 8 120表示查询wheels字段值大于8或者length和width的乘积大于120的数据;其中参数2代表参数个数;WHEREEVALSHA:条件语句,和
WHEREEVAL类似,只不过把LUA脚步提前载入了服务器,转化成目标SHA;WHEREEVALSHA 232fd51614574cf0867b83d384a5e898cfd24e5a 2 8 120表示执行服务器中的指定脚本语句,需要2个参数,参数值分别是8和120;脚本可通过
SCRIPT LOAD script命令提前导入;CLIP:目前还没测试出来具体有啥效果;后续有结果会更新;
NOFIELDS:告知服务器返回值当中不要包含
FIELD对应的字段和值;比如SET fleet my_field FIELD speed 90 POINT 33.462 -112.268在查询结果中,同时会把对应的speed 90这个FIELD给带上;如果查询参数中带有NOFIELDS,那么结果中就不会有FIELD字段;FENCE:针对
del、drop、set三类命令进行监测;set命令执行时,又可能会触发以下事件:inside、outside、enter、exit、cross;inside:当数据对象在指定区域时触发;outside:当数据对象位于指定区域之外时触发;enter:当数据对象之前不在指定区域内,现在进入指定区域时触发;exit:当数据对象之前在指定区域内,现在离开指定区域时触发;cross:之前不在指定区域的数据对象进入或离开该区域时触发;默认情况下,会监测
del、drop、set三类命令及触发的所有事件。DETECT:指定触发的事件;
COMMANDS:指定监测的命令
del、drop、set;一般情况下,
FENCE、DETECT、COMMANDS三个参数是配合使用的;如果我们只监测
set命令触发的enter事件,命令如下:SETCHAN warehouse NEARBY fleet FENCE DETECT enter COMMANDS set POINT 33.462 -112.268 6000该命令会将fleet中的数据对象因为
set命令进入点位33.462 -112.268六公里范围内触发的enter事件发送到warehouse通道中;[COUNT|IDS|OBJECTS|POINTS|BOUNDS|(HASHES precision)] :设置查询的结果的表达形式;
COUNT表示结果数据;IDS表示结果的id列表;OBJECTS表示以OBJECT的形式展现;POINTS和BOUNDS类似HASHES precision:表示以Geohash的方式展现,precision代表精度,使用数字表示;(GET key id)|(BOUNDS minlat minlon maxlat maxlon)|(OBJECT geojson)|(CIRCLE lat lon meters)|(TILE x y z)|(QUADKEY quadkey)|(HASH geohash)|(SECTOR lat lon meters bearing1 bearing2)
以上都代表指定的区域范围。
GET key id表示从内存中找到已经存储好的区域范围;BOUNDS表示一个矩形区域范围;OBJECT可以表示一个多边形区域;CIRCLE表示圆形区域;TILE:区域的另一种表达形式;QUADKEY:区域的另一种表达形式;SECTOR表示扇形区域; -
WITHIN
搜索包含在区域内的数据对象
WITHIN key [CURSOR start] [LIMIT count] [MATCH pattern] [WHERE field min max ...] [WHEREIN field count value [value...] ...] [WHEREEVAL script numargs arg [arg...] ...] [WHEREEVALSHA sha1 numargs arg [arg...] ...] [NOFIELDS] [FENCE] [DETECT what] [COMMANDS which] [COUNT|IDS|OBJECTS|POINTS|BOUNDS|(HASHES precision)] (GET key id)|(BOUNDS minlat minlon maxlat maxlon)|(OBJECT geojson)|(CIRCLE lat lon meters)|(TILE x y z)|(QUADKEY quadkey)|(HASH geohash)|(SECTOR lat lon meters bearing1 bearing2)WITHIN与INTERSECTS唯一的不同就是,WITHIN只监测包含在指定区域的数据对象,而INTERSECTS还要监测与指定区域相交的数据对象。 -
NEARBY
搜索靠近指定点范围内的数据对象;最靠近的在最前面;
NEARBY key [CURSOR start] [LIMIT count] [MATCH pattern] [DISTANCE] [WHERE field min max ...] [WHEREIN field count value [value...] ...] [WHEREEVAL script numargs arg [arg...] ...] [WHEREEVALSHA sha1 numargs arg [arg...] ...] [NOFIELDS] [FENCE] [DETECT what] [COMMANDS which] [COUNT|IDS|OBJECTS|POINTS|BOUNDS|(HASHES precision)] (POINT lat lon meters)|(ROAM key pattern meters)NEARBY命令所对应的指定区域一定是以POINT为中心的的范围区域;ROAM key pattern meters:这个参数与
POINT lat lon meters参数只能二选一,ROAM可以指定一组点为中心的多个范围区域;