2016-11-04 67 views
0

我對RethinkDB相當新穎,所以我能夠在JavaScript中創建我的查詢,現在的問題是將此查詢轉換爲Java語言。RethinkDB javascript to java查詢

有更多經驗的人能幫助我嗎?

r.db('reval').table('measurements').filter({ measurementId: 1478261131038}) 
       .update(function(measurement){ 
        return r.branch(measurement.hasFields('movingObject'), 
        { movingObject: measurement('movingObject').append({'x': 10, 'y': 40})}, 
        { movingObject : [{'x': 0, 'y': 0}]} 
         )}) 

UPDATE:

從......我能插入陣列的第一個對象一定的幫助後。現在的問題是當我想繼續插入更多的元素。

我開始與該記錄:

{ 
"from": null , 
"id": "c94aa215-a47e-4cd0-8f98-1b69d7e93a1d" , 
"measurementId": 1478273740811 , 
"movingObject": null, 
"time": null , 
"userObject": null 
} 

調用此查詢後:

MapObject myArray = new MapObject().with("x", 20).with("y", 80); 
    MapObject myArray2 = new MapObject().with("x", 10).with("y", 40); 

     HashMap run = r.db("reval").table("measurements") 
       .filter(measurement -> measurement 
         .g("measurementId") 
         .eq(1478273740811L)) 
       .update(measurement -> 
        r.branch(
          measurement.hasFields("movingObject"), 
           r.hashMap("movingObject", measurement.g("movingObject").append(myArray)), 
           new MapObject().with("movingObject", myArray2) 
          )).run(connectionFactory.createConnection()); 

結果是這樣的:

{ 
"from": null , 
"id": "c94aa215-a47e-4cd0-8f98-1b69d7e93a1d" , 
"measurementId": 1478273740811 , 
"movingObject": { 
"x": 10 , 
"y": 40 
} , 
"time": null , 
"userObject": null 
} 

現在,當我想插入另一個元素成我的數組(在本例中{{「x」:20,「y」:80}})Java代碼給出了以下錯誤:

{ 
deleted=0, 
inserted=0, 
unchanged=0, 
replaced=0, 
first_error=Expected type ARRAY but found OBJECT., 
errors=1, 
skipped=0 
} 

任何人都可以給我一些關於如何解決這個問題的指針,因爲我認爲我們非常接近解決方案。

回答

0

事情是這樣的:

r.table("measurements") 
       .filter(measurement -> measurement.g("measurementId").eq(1478261131038L)) 
       .update(measurement -> r.hashMap("movingObject", r.branch(measurement.hasFields("movingObject"), 
         measurement.g("movingObject").append(r.hashMap("x", 10).with("y", 40)), 
         r.array(r.hashMap("x", 0).with("y", 0))))); 
+0

感謝您的幫助,我實現了您提供的代碼(一些改動後)。我仍然有一些問題,如需更多詳細信息,請查看最新的問題。 – Anonymous

+0

@匿名MB你必須爲此寫另一個問題? – Suvitruf

+0

否根據上述問題** UPDATE **中的詳細內容列出。 – Anonymous