2016-03-13 37 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){ ...