一、添加索引
想要查询地理位置的字段一定要先在对应的字段在云数据库对应的表中的索引管理添加索引(其实官方文档有说明,但是刚开始接触的话一般都容易忽视)
二、使用geoNear容易遇到的坑
1、geoNear只能放在最外层,也就是不能嵌套在比如_or里面,否则会报错,这样就没办法进行or查询
2、geoNear不可以在一个where里面有两个及以上同时存在,只能有一个geoNear,否则会报错
以上这两个问题,我发现在官方文档也没有明确说明怎么解决,只是给个错误码,而且百度也找不到,导致想要实现复杂的地理位置查询就实现不了。
不过解决办法总是有的。
解决方案:摈弃geoNear,使用geoWithin。
我发现其实使用geoWithin的给定圆的方法和geoNear是差不多的,但是geoWithin使用起来就不会有以上那些问题,这样就可以实现复杂的地理位置查询了😃