Mitja, Perhaps you could record in some other field that the doc with type "bar" used to be type "foo".
Then way you can filter the replication by docs where: type == "foo" || type == "bar" && old_type == "foo" This should then replicate docs that change their type from "foo" to "bar". To give any better advice, I'd need to hear more concretely what you're trying to do here. -Zach On Sunday, July 10, 2011, Mitja Kleider <[email protected]> wrote: > On Sat, 2011-07-09 at 17:26 -0500, Zachary Zolton wrote: >> Could you change your filter to something like this? >> >> function(doc) { >> return doc._deleted || doc.type == 'foo'; >> } >> >> That way you replicate all deleted docs. > > That would work, thanks. I tried to avoid replicating millions of > deleted documents together with a few hundred documents passing the > filter. > > A solution might be this validate_doc_update function on the target > database: > > function(newDoc, oldDoc, userCtx) { > if (newDoc._deleted === true && !oldDoc) { > throw({forbidden: 'do not create deleted docs'}); > } > } > > This way all deleted documents will be transmitted, but at least not > written if there is no previous revision. > > > The problem for changed values remains: when the source database changes > type='foo' to type='bar', the target database keeps the old revision > with type='foo'. > > > Mitja > >
