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.
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
.
Vous pouvez utiliser replace
avec without
:
r.db('db').table('user').replace(r.row.without('key'))
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"
}
}