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

时间:2018-07-28 17:36:33

标签: c# rethinkdb reql

我正在尝试更新或插入数据库中的某个元素(如果不存在),但是到目前为止,我还没有找到有关如何使用数据库中提供的UpdateFilter的任何示例。 C#Api。(C#Api,不是RethinkDB Reql)。

链接到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);

我需要基于playerRequest.data执行playerId的更新,如果不存在,请插入Player

我已经搜索了Api,但到目前为止没有成功。

PS 我曾尝试安装Linq to ReQL扩展程序,但方法无法使用。

1 个答案:

答案 0 :(得分:0)

在搜索并询问对我有很大帮助的驱动程序作者之后(谢谢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驱动程序)