RethinkDb 地理空间查询 Java return 不正确的值

RethinkDb geospatial queries with Java return incorrect values

我正在尝试使用 java 进行涉及 r.point 方法的简单 RethinkDb 查询。乍一看,它似乎工作正常。但是,使用 reql 语法 return 直接从终端执行此方法是一个完全不同的值。谁能理解为什么会这样?或者如果它们代表相同的地理空间坐标?

这是我使用的代码:

    Point geoloc = RethinkDB.r.point(Float.parseFloat(parsedLocation[0]),Float.parseFloat(parsedLocation[1]));

    data.setGeolocation(geoloc);
    db = new Db();
    int reponse = db.putDataInCollection(data); //Simply put the object in the database

哪个return这是地理定位字段:

"geolocation": {
  "args": [
      {
      "args": [ ],
      "datum": -122 ,
      "optargs": { } ,
      "termType":  "DATUM"
      } ,
      {
      "args": [ ],
      "datum": 88 ,
      "optargs": { } ,
      "termType":  "DATUM"
      }
   ], 
   "optargs": { } ,
   "termType":  "POINT"
   } 

但是,从终端执行完全相同的命令 returns :

"geolocation": {
   "$reql_type$":  "GEOMETRY" ,
   "coordinates": [
       -122.2 ,
       74.8
       ] ,
   "type":  "Point"
 }

这绝对不是一回事。

我做错了什么?

编辑:尝试使用 Javascript 执行相同的方法并且它工作得很好。然而 java.

似乎有些不对劲

今天我还没有找到问题的原因,但我在前一段时间设法找到了一个替代解决方案,如果有人遇到同样的问题,就在这里:

包 com.unwheeze.beans;

public class GeoBean {

    private String $reql_type$;
    private double coordinates[];
    private String type;


    public GeoBean() {}
    public GeoBean(double[] coordinates) {
        this.$reql_type$ = "GEOMETRY";
        this.coordinates = coordinates;
        this.type = "POINT";
    }

    public String get$reql_type$() {
        return $reql_type$;
    }

    public void set$reql_type$(String $reql_type$) {
        this.$reql_type$ = $reql_type$;
    }

    public double[] getCoordinates() {
        return coordinates;
    }

    public void setCoordinates(double[] coordinates) {
        this.coordinates = coordinates;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

我创建了一个简单的 bean 来复制 rethinkDb 中 REAL geoJson 字段的字段,我只是在将整个 Json 对象推送到数据库之前使用 Gson 对其进行解析。