2015-05-08 4 views
0

Я преобразовываю лист excel в массив объектов JSON, сопоставляя данные с именами столбцов, а затем вставляя их в RethinkDB. Проблема в том, что мне тогда нужно добавить эти документы в db с данными, которые вычисляются в другом месте. Это означает добавление новых столбцов в документы, которые уже хранятся в базе данных, а затем вставка данных в эти столбцы. Есть какой-либо способ сделать это?Добавить новый столбец в таблицу rethinkdb?

ответ

3

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

Первичный ключ хранится в поле id ваших документов. Поскольку это случайно сгенерировано, может быть трудно найти документ, который соответствует данной строке в листе Excel позже, поэтому я рекомендую вам вставлять ваши документы с номером строки в качестве своего первичного ключа (просто введите поле id в JSON объекты и установите его на числовое значение).

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

r.table(...).get(i).update({"NEWCOL": VAL}) 

Если NEWCOL не существует в этом документе, это будет просто добавить Это. Если он уже существует, он будет перезаписан VAL.

Поскольку RethinkDB является схематичным, вам обычно не нужно явно добавлять новые столбцы. Если вы все еще хотите, чтобы сделать это, вы можете запустить эту команду, чтобы инициализировать NEWCOL в null на всех документах в таблице:

r.table(...).update({"NEWCOL": null}) 
+0

Спасибо за это! –