web-dev-qa-db-ja.com

RethinkDBドキュメントからキーを削除する方法は?

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を設定するだけです(これは妥当に見えます)。

rethinkdb data ExplorerでWeb UIを介してテストされた例。

42
Robert Zaremba

RethinkDBのWebサイトにあるドキュメントの関連する例を以下に示します。 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/ )を使用して、更新するドキュメントの選択を変更できます。 dbtablegetget_allbetweenfilter

76

replacewithoutとともに使用できます。

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

ドキュメント全体を更新するために置換を使用する必要はありません。関連ドキュメントは次のとおりです。 ReQLコマンド:リテラル

ユーザードキュメントが次のようになっているとします。

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

また、dataプロパティから年齢を削除したいとします。通常、更新は新しいデータを古いデータとマージするだけです。 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"
  }
}
4
Doug Coburn