Подтвердить что ты не робот

Как удалить ключ из документа 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 через веб-интерфейс.

4b9b3361

Ответ 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.

Ответ 2

Вы можете использовать replace с without:

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

Ответ 3

Вам не нужно использовать замену для обновления всего документа. Вот соответствующая документация: Команда ReQL: литерал

Предположим, что ваш пользовательский документ выглядит следующим образом:

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