CouchDB Рекурсивные одноразовые запросы - PullRequest
3 голосов
/ 11 января 2010

Не совсем точно, как это назвать, но в SQL я часто обнаруживаю что-то подобное во время разработки:

DELETE FROM people WHERE name == "John"

Это часто используется, когда я только что импортировал кучу данных с помощью пакетного импортера и хочу очистить несколько результатов, но не весь набор данных. Как мне сделать это в CouchDB? Я легко могу сделать функцию карты

function(doc) {
   if (doc.Name == "John") 
       emit(doc._id, null);
}

А затем удалите возвращенные _ids ... но для этого потребуется написать какое-то внешнее приложение, которое получит эти _ids и выполнит DELETE. Иногда мои запросы гораздо более сложны и требуют нескольких запросов с последующим удалением, а затем другим запросом и обновлением.

Каков принятый метод для выполнения такого рода карты / удаления и, возможно, карты / обновления?

1 Ответ

2 голосов
/ 12 января 2010

Принятый метод в значительной степени так же, как вы описываете. Запросите представление и затем удалите возвращенные идентификаторы. Это не так плохо, как кажется. Быстрый сценарий выбора языка с библиотекой CouchDB, и вы, по сути, просто переводите логику своего SQL на язык с большей мощностью Некоторые могут рассмотреть эту выгоду. YMMV

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