В книге CouchDB есть хорошая глава здесь: http://guide.couchdb.org/draft/conflicts.html
Вы также можете прочитать из вики: http://wiki.apache.org/couchdb/Replication_and_conflicts
Вот некоторые выдержки.
Найдите конфликты:
function(doc) {
if(doc._conflicts) {
emit(doc._conflicts, null);
}
}
Как только вы обнаружите конфликт, вам нужно будет определить, как объединить два документа.CouchDB не делает никаких предположений, поэтому вы должны сделать это самостоятельно.Это потому, что слияние является проблемой домена.Как только у вас есть стратегия выполнения слияния, вы должны работать с документами.
Позволяет получить победителя и конфликтные документы
GET /db/bob?conflicts=true
вы получите победителя плюс член _conflicts, содержащий массив оборотов другой, конфликтующей ревизии,Затем вы можете получить их по отдельности, используя последующие операции GET / db / bob? Rev = xxxx.
После того, как вы получите все конфликтующие ревизии, ваше приложение сможет выбрать отображение всех их пользователю.Или он может попытаться объединить их, записать обратно объединенную версию и удалить конфликтующие версии, то есть разрешить конфликт навсегда.
Как описано выше, вам необходимо обновить одну ревизию и удалить все конфликтующие версии.ревизии явно.Это можно сделать с помощью одного POST для _bulk_docs, установив «_deleted»: true для тех ревизий, которые вы хотите удалить.
Я извлек вышеизложенное из вики и книги CouchDB, но я надеюсь,это делает более понятным, с чего начать.