Domanda molto vecchia, ma è in cima a Google e non mi piacciono le risposte che vedo, quindi ecco la mia.
Couchdb offre molto di più della possibilità di sviluppare CouchApps. La maggior parte delle persone usa CouchDb in una classica architettura web a 3 livelli.
In pratica, il fattore decisivo per la maggior parte delle persone sarà il fatto che MongoDb consente l'interrogazione ad-hoc con una sintassi simile a SQL mentre CouchDb non lo fa (devi creare una mappa / ridurre le viste che spengono alcune persone anche se creano queste viste è compatibile con lo sviluppo rapido di applicazioni - non hanno nulla a che fare con le procedure memorizzate).
Per affrontare i punti sollevati nella risposta accettata: CouchDb ha un ottimo sistema di controllo delle versioni, ma ciò non significa che sia adatto (o più adatto) per i luoghi in cui il controllo delle versioni è importante. Inoltre, couchdb è di facile scrittura grazie alla sua natura di sola aggiunta (le operazioni di scrittura ritornano in pochissimo tempo, garantendo che nessun dato verrà mai perso).
Una cosa molto importante che non è menzionata da nessuno è il fatto che CouchDb si basa su indici b-tree. Ciò significa che se si dispone di 1 "riga" o 20 miliardi, il tempo di interrogazione rimarrà sempre inferiore a 10 ms. Questo è un punto di svolta che rende CouchDb un database a bassa latenza e di facile lettura, e questo non dovrebbe assolutamente essere trascurato.
Per essere onesti ed esaustivi, il vantaggio di MongoDb rispetto a CouchDb è quello degli strumenti e del marketing. Hanno strumenti per cittadini di prima classe per tutte le principali lingue e piattaforme che rendono facile l'on-boarding e questo aggiunto alla loro query ad hoc rende ancora più semplice il passaggio da SQL.
CouchDb non ha questo livello di strumenti - anche se oggi ci sono molte librerie disponibili - ma CouchDb è esposto come API HTTP ed è quindi abbastanza facile creare un wrapper nella tua lingua preferita per parlarne. Personalmente mi piace questo approccio in quanto evita il gonfiore e ti consente di prendere solo quello che vuoi (principio di segregazione dell'interfaccia).
Quindi direi che usare l'uno o l'altro è in gran parte una questione di conforto e preferenza con i loro paradigmi. L'approccio di CouchDb "si adatta", per alcune persone, ma se dopo aver appreso le funzionalità del database (nella guida ufficiale esaustiva ) non hai il tuo momento "inferno sì", probabilmente dovresti andare avanti.
Scoraggerei l'uso di CouchDb se si desidera semplicemente utilizzare "lo strumento giusto per il lavoro giusto". perché scoprirai che non puoi semplicemente usarlo in quel modo e finirai per essere incazzato e scrivere post sul blog come "Where are join in CouchDb?" e "Dov'è la gestione delle transazioni?". In effetti, Couchdb è - paradossalmente - molto trasparente ma allo stesso tempo richiede un cambio di paradigma e un cambiamento nel modo in cui affronti i problemi per brillare (e lavorare davvero).
Ma una volta fatto, ripaga davvero. Personalmente avrei bisogno di ragioni molto valide o di un grosso problema su un progetto per scegliere un altro database, ma finora non ne ho incontrato nessuno.