我正在考虑使用C# RethinkDB.Driver库更新RethinkDB中的存储值,我只是没有做对。
我可以通过获取结果来实现更新,更改该对象,然后单独调用以使用该对象进行更新。当有许多调用记录要更新时,这个值会在应用程序处理记录时在其他地方更新。
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
的结果错误表明这只是传回字段值而不是更新对象。
理想情况下,我想一次更新多个列,任何建议都值得赞赏:)
答案 0 :(得分:3)
这是一个适用于ReQL数据资源管理器的示例。您可以根据需要在更新之前进行过滤。我认为这将转换为C#Driver,但我对此没有任何经验。
r.db('database').table('tablename').update({clicks: r.row("clicks").add(1)}).run().then(function(result){ ...
答案 1 :(得分:2)
感谢T Resudek your 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);
我有兴趣知道这是正确的方式还是更好的方法。