【问题标题】:How to remove a key from a RethinkDB document?如何从 RethinkDB 文档中删除密钥?
【发布时间】:2013-09-02 20:31:42
【问题描述】:

我正在尝试从 RethinkDB 文档中删除一个密钥。 我的方法(不起作用):

r.db('db').table('user').replace(function(row){delete row["key"]; return row}) 

其他方法:

r.db('db').table('user').update({key: null}) 

这个只是设置 row.key = null (看起来很合理)。

通过 Web UI 在 rethinkdb 数据浏览器 上测试的示例。

【问题讨论】:

    标签: rethinkdb rethinkdb-python


    【解决方案1】:

    这是 RethinkDB 网站上文档中的相关示例:http://rethinkdb.com/docs/cookbook/python/#removing-a-field-from-a-document

    要从表中的所有文档中删除一个字段,您需要使用replace 将文档更新为不包含所需字段(使用without):

    r.db('db').table('user').replace(r.row.without('key'))
    

    要从表格中的一个特定文档中删除字段:

    r.db('db').table('user').get('id').replace(r.row.without('key'))
    

    您可以使用 API (http://rethinkdb.com/api/) 中的任何选择器更改要更新的文档的选择,例如db, table, get, get_all, between, filter.

    【讨论】:

    • 如果您正在寻找 javascript 版本的食谱:rethinkdb.com/docs/cookbook/javascript/…
    • 如何为键的嵌套字段执行此操作?
    • @Suvtruf,可以使用嵌套字段语法如下:.replace(r.row.without({key1: {key2: true}}))
    • 如何删除嵌套属性?喜欢without('foo.bar.baz') 删除baz 属性?
    【解决方案2】:

    您可以将replacewithout 一起使用:

    r.db('db').table('user').replace(r.row.without('key'))
    

    【讨论】:

    • 如何为键的嵌套字段执行此操作?
    • 对于嵌套字段,可以使用嵌套字段语法如下:.replace(r.row.without({key1: {key2: true}}))
    • 如何将它与更新另一个键的值结合起来?
    • true 在这里做什么?
    【解决方案3】:

    您不需要使用替换来更新整个文档。 以下是相关文档:ReQL command: literal

    假设您的用户文档如下所示:

    {
      "id": 1,
      "name": "Alice",
      "data": {
        "age": 19,
        "city": "Dallas",
        "job": "Engineer"
      }
    }
    

    并且您想从数据属性中删除年龄。通常,更新只会将您的新数据与旧数据合并。 r.literal 可用于将数据对象视为一个单元。

    r.table('users').get(1).update({ data: r.literal({ age: 19, job: 'Engineer' }) }).run(conn, callback)
    
    // Result passed to callback
    {
      "id": 1,
      "name": "Alice",
      "data": {
        "age": 19,
        "job": "Engineer"
      }
    }
    

    r.table('users').get(1).update({ data: { city: r.literal() } }).run(conn, callback)
    
    // Result passed to callback
    {
      "id": 1,
      "name": "Alice",
      "data": {
        "age": 19,
        "job": "Engineer"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多