web-dev-qa-db-fra.com

Comment supprimer une clé d'un document RethinkDB?

J'essaie de supprimer une clé d'un document RethinkDB. Mes approches (qui n'ont pas fonctionné):

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

Autre approche:

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

Celui-ci définit simplement row.key = null (ce qui semble raisonnable).

Exemples testés sur rethinkdb data Explorer via l'interface utilisateur Web.

42
Robert Zaremba

Voici l'exemple pertinent de la documentation sur le site Web de RethinkDB: http://rethinkdb.com/docs/cookbook/python/#removing-a-field-from-a-document

Pour supprimer un champ de tous les documents d'un tableau, vous devez utiliser replace pour mettre à jour le document pour ne pas inclure le champ souhaité (en utilisant without):

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

Pour supprimer le champ d'un document spécifique du tableau:

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

Vous pouvez modifier la sélection des documents à mettre à jour en utilisant l'un des sélecteurs de l'API ( http://rethinkdb.com/api/ ), par ex. db, table, get, get_all, between, filter.

76
Michael Glukhovsky

Vous pouvez utiliser replace avec without:

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

Vous n'avez pas besoin d'utiliser replace pour mettre à jour l'intégralité du document. Voici la documentation pertinente: commande ReQL: littérale

Supposons que votre document utilisateur ressemble à ceci:

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

Et vous souhaitez supprimer l'âge de la propriété de données. Normalement, la mise à jour fusionnera simplement vos nouvelles données avec les anciennes données. r.literal peut être utilisé pour traiter l'objet de données comme une seule unité.

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"
  }
}

ou

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