Каков наилучший путь, когда нужно изменить _ID во многих документах CouchDB? - PullRequest
1 голос
/ 28 января 2012

CouchDB 1.1, Windows.
Я реорганизую свою базу данных из этой структуры (пример)

{
    "_id": "0 rock-inorganic 2 m m 10 -50 30 a",
    "inner-coord": [50, 90, 20],
    "map": ...
    ...
}

к этому

{
    "_id": "0 2 rock-inorganic 10 -50 30 a",
    "inner-coord": [50, 90, 20],
    "map": ...
    ...
}

Пожалуйста, предложите простой путь для переименования документов в _id (один / много): Futon не разрешает это.

1 Ответ

1 голос
/ 28 января 2012

Сохранить следующий вид в проектном документе:

карта:

function (doc) {
  function isOldDoc() {
    // IT'S AN EXAMPLE: CHANGE IT TO FIT YOUR NEEDS
    return doc._id.match(/^\d \w+ \d \w \w \d+ -?\d+ \d+ \w$/);
  }

  if (isOldDoc()) {
    emit(doc._id, 1);
  }
}

Возвращает все документы, с которыми вам нужно работать.

Напишите скрипт для запроса представления с include_docs=true и для каждой строки выполните:

  • сохранить документ с новым _id
  • удалить старый документ.

В качестве альтернативы, вы можете запросить _all_docs и для каждого row.id в старом формате сделать COPY с Destination, установленным на новый _id с последующим УДАЛИТЬ старого _id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...