Are there any techniques/proposals to enforce unique constraints? Yes, we can create key that\'s unique, but we cannot change key and keys and also this approach is not suit
It depends. Consider the multi-master replicated case, there could be conflicting entries added there consistent within each master, but not consistent once they replicate. You might only be using one couchdb server, but in general they design it assuming a multimaster case, and don't put in any features that would only work correctly in single unreplicated server.
If you only care about the single server case the conceivably you could rebuild your couchjs with networking support and perform an http query in your validate_doc_update()
function that would perform a query against the DB to see if the email address already is already used and fail the update if so. Check here for more details about the validation mechanism. I don't recommend doing that, instead I would embed all the uniqueness in the id field (either directly or via hashing) and just deal with moving the doc if the user changed anything that effected that.