我们有一个关于通过Mongo存储插件进行MongoDB和Drill集成的问题;我们需要使用MongoDB地理空间函数通过Drill查询和执行地理空间查询。这意味着我们在Mongo中有数据并且使用Drill我们需要调用那些Mongo函数。
例如,考虑我们在Mongo中有一个区域集合,其区域信息包括geojson。直接在Mongo中,我们可以使用$geoIntersects
Mongo函数(找到与特定Point相交的区域)执行以下查询,并获得成功结果:
db.getCollection('zones').find({ geom: { $geoIntersects: { $geometry: { type: "Point", coordinates: [ -73.93414657, 40.82302903 ] } } } })
主要问题:
是否可以在Drill中使用Mongo地理空间查询运算符?我们该怎么做?
另外,如果我们想要执行上述相同的查询但是使用Drill,那可能吗?如果是的话,我们怎么做呢?
感谢您的帮助!
答案 0 :(得分:1)
Apache Drill的Mongo存储插件充当Mongo客户端的外观,此外观不支持底层Mongo客户端的所有功能。 $geoIntersects
和$geometry
运算符不受支持或以其他方式表示; Apache Drill的Mongo存储插件不知道那些运营商。
original documentation for Apache Drill's Mongo storage plugin声明:
截至目前,谓词下推是针对以下过滤器实施的:>,> =,<,< =,==,!=,isNull和isNotNull。
查看latest version of the code情况仍然存在。
所以,这个问题的答案......
是否可以在Drill中使用Mongo地理空间查询运算符?
...是:否。 Apache Drill的Mongo存储插件仅支持以下查询运算符:>, >=, <, <=, ==, !=, isNull and isNotNull
。
这个问题的答案......
另外,如果我们想要执行上述相同的查询但是使用Drill,那可能吗?
... 不。请记住,Apache Drill的Mongo存储插件试图在文档存储上提供SQL式查询功能,而$geoIntersects
和$geometry
等地理空间查询操作符在SQL中没有通用的,易于理解的等价物。
不幸的是,在上面的回复中对你没有好消息:(我认为你的选择是
Component=Storage - MongoDB