如何从RethinkDB文档中删除密钥?

Rob*_*mba 41 rethinkdb rethinkdb-python

我正在尝试从RethinkDB文档中删除密钥.我的方法(没有用):

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

其他方法:

r.db('db').table('user').update({key: null}) 
Run Code Online (Sandbox Code Playgroud)

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

通过Web UI 在rethinkdb数据资源管理器上测试的示例.

Mic*_*sky 75

以下是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'))
Run Code Online (Sandbox Code Playgroud)

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

r.db('db').table('user').get('id').replace(r.row.without('key'))
Run Code Online (Sandbox Code Playgroud)

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

  • @Suvitruf,您可以使用嵌套字段语法如下:`.replace(r.row.without({key1:{key2:true}}))` (8认同)
  • 如果您正在寻找配方的javascript版本:http://rethinkdb.com/docs/cookbook/javascript/#removing-a-field-from-a-document (3认同)
  • 如何为嵌套的键字段执行此操作? (3认同)

Atn*_*nNn 12

你可以用replacewithout:

r.db('db').table('user').replace(r.row.without('key'))
Run Code Online (Sandbox Code Playgroud)

  • 如何为嵌套的键字段执行此操作? (2认同)
  • 对于嵌套字段,您可以使用嵌套字段语法,如下所示:`.replace(r.row.without({key1:{key2:true}}))` (2认同)

Dou*_*urn 6

您不需要使用替换来更新整个文档。这是相关文档:ReQL命令:文字

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

{
  "id": 1,
  "name": "Alice",
  "data": {
    "age": 19,
    "city": "Dallas",
    "job": "Engineer"
  }
}
Run Code Online (Sandbox Code Playgroud)

并且您想从数据属性中删除年龄。通常,更新只会将新数据与旧数据合并。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"
  }
}
Run Code Online (Sandbox Code Playgroud)

或者

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"
  }
}
Run Code Online (Sandbox Code Playgroud)