如何在 RethinkDB 中更新或插入项目?

How to update or insert an item in RethinkDB?

我正在尝试更新或插入(如果它不存在)数据库中的元素,但到目前为止我还没有找到任何关于如何使用所提供的 UpdateFilter 的示例通过 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 一个)