2016-03-13 62 views
1

我正在查看使用C# RethinkDB.Driver庫更新RethinkDB中的存儲值,我只是沒有把它做好。Rethinkdb .net更新值

我可以通過獲取結果來實現更新,更改該對象,然後單獨調用該對象進行更新。當有許多對記錄的調用需要這樣更新時,在應用程序正在處理記錄的同時,其他值正在更新。

TestingObject record = r.Db("test").Table("learning").Get("c8c54346-e35f-4025-8641-7117f12ebc5b").Run(_conn); 

record.fieldNameIntValue = record.fieldNameIntValue + 1; 

var result = r.Db("test").Table("learning").Get("c8c54346-e35f-4025-8641-7117f12ebc5b").Update(record).Run(_conn); 

我一直在試圖沿着這些路線的東西:

var result = r.Db("test").Table("learning").Get("c8c54346-e35f-4025-8641-7117f12ebc5b").Update(row => row["fieldNameIntValue"].Add(1)).Run(_conn); 

Inserted value must be an OBJECT (got NUMBER):101結果的錯誤提示,這是隻有通過字段值後面,而不是更新的對象。

理想我想更新一次多列,任何建議表示讚賞:)

回答

2

感謝T Resudekyour answer和更清晰的頭部有助於強調需要地圖計算的財產。在javadocs

尋找更新它HashMap方法,我跟着一起c# library和它的作品。

var result = r.Db("test").Table("learning").Get("c8c54346-e35f-4025-8641-7117f12ebc5b").Update(row => r.HashMap("fieldNameIntValue",row["fieldNameIntValue"].Add(1))).Run(_conn); 

我很想知道這是正確的方法還是更好的方法。

+1

看起來不錯。這應該工作。我認爲你也可以使用匿名類型代替hashmap(額外的C#驅動程序功能)。另外,我也會遵循@T Resudek的建議。如果遇到任何問題,請嘗試使查詢在* Data Explorer *中工作,並且應該很容易轉換爲C#驅動程序。 :)希望幫助! –

3

這是在ReQL數據資源管理器工作的例子。您可以根據需要鏈接可能的過濾器。我認爲這將轉化爲C#驅動程序,但我沒有任何經驗。

r.db('database').table('tablename').update({clicks: r.row("clicks").add(1)}).run().then(function(result){ ...