如何在 RethinkDB 中更新或插入项目?
How to update or insert an item in RethinkDB?
我正在尝试更新或插入(如果它不存在)数据库中的元素,但到目前为止我还没有找到任何关于如何使用所提供的 Update
和 Filter
的示例通过 C# Api.(C# Api ,而不是 RethinkDB Reql).
Link 到 api : https://github.com/bchavez/RethinkDb.Driver
谁能帮帮我?
POCO
class Player
{
public long playerId { get; set; }
public long groupId { get; set; }
public int type { get; set; }
public double lat { get; set; }
public double lng { get; set; }
}
class PlayerRequest
{
public Player data { get; set; }
public Auxdata aux { get; set; }
}
这将是插入请求:
dynamic rez = await r.Db(Constants.DB_NAME).Table(Constants.TABLE_CLIENT)
.Insert(playerRequest.data).RunAsync(Con);
我需要根据 playerId
执行 playerRequest.data
的更新,或者如果 Player
不存在则插入。
我已经搜索了 Api 但到目前为止没有成功。
P.S 我试过安装 Linq to ReQL 扩展,但方法接缝不可用。
经过搜索和询问驱动的作者,对我帮助很大(谢谢Brian!)解决方案如下:
在 Js 中我们用 {prop1:value1,prop2,value2}
定义临时对象
C# 等价物正在使用匿名类型:new{prop1:value1,prop2:value2}
r.Db(Constants.DB_NAME).Table(Constants.CLIENT_TABLE)
.Filter(new { playerId = playerRequest.data.playerId })
.Update(new { lng = playerRequest.data.lng, lat = playerRequest.data.lat })
.RunResult<QueryResult>(this.Con);
此外,为了进一步解释,您必须阅读 github 存储库 wiki 的这一部分:
https://github.com/bchavez/RethinkDb.Driver/wiki/Extra-C%23-Driver-Features
如果对如何使用方法有疑问,请检查 Java 驱动程序实现,它们是相似的(C# 驱动程序扩展了 Java 一个)
我正在尝试更新或插入(如果它不存在)数据库中的元素,但到目前为止我还没有找到任何关于如何使用所提供的 Update
和 Filter
的示例通过 C# Api.(C# Api ,而不是 RethinkDB Reql).
Link 到 api : https://github.com/bchavez/RethinkDb.Driver
谁能帮帮我?
POCO
class Player
{
public long playerId { get; set; }
public long groupId { get; set; }
public int type { get; set; }
public double lat { get; set; }
public double lng { get; set; }
}
class PlayerRequest
{
public Player data { get; set; }
public Auxdata aux { get; set; }
}
这将是插入请求:
dynamic rez = await r.Db(Constants.DB_NAME).Table(Constants.TABLE_CLIENT)
.Insert(playerRequest.data).RunAsync(Con);
我需要根据 playerId
执行 playerRequest.data
的更新,或者如果 Player
不存在则插入。
我已经搜索了 Api 但到目前为止没有成功。
P.S 我试过安装 Linq to ReQL 扩展,但方法接缝不可用。
经过搜索和询问驱动的作者,对我帮助很大(谢谢Brian!)解决方案如下:
在 Js 中我们用 {prop1:value1,prop2,value2}
C# 等价物正在使用匿名类型:new{prop1:value1,prop2:value2}
r.Db(Constants.DB_NAME).Table(Constants.CLIENT_TABLE)
.Filter(new { playerId = playerRequest.data.playerId })
.Update(new { lng = playerRequest.data.lng, lat = playerRequest.data.lat })
.RunResult<QueryResult>(this.Con);
此外,为了进一步解释,您必须阅读 github 存储库 wiki 的这一部分: https://github.com/bchavez/RethinkDb.Driver/wiki/Extra-C%23-Driver-Features
如果对如何使用方法有疑问,请检查 Java 驱动程序实现,它们是相似的(C# 驱动程序扩展了 Java 一个)