Secondo lo CouchDB Wiki on PUT operations.Bulk aggiornando un database CouchDB senza un valore _rev per documento?
Per aggiornare un documento esistente, si invia anche una richiesta PUT. In questo caso, il corpo JSON deve contenere una proprietà _rev, che consente a CouchDB di sapere su quale revisione sono basate le modifiche. Se la revisione del documento attualmente memorizzato nel database non corrisponde, viene restituito un errore di conflitto 409.
Il mio obiettivo è quello di eseguire un bulk_docs aggiornare:
curl -X POST [domain]/[couch db name]/_bulk_docs -H "Content-type: application/json" -d @[some document].json
mio flusso di lavoro è simile a questo:
- miei dati è in un foglio di calcolo di Google Docs.
- ho convertire i dati del foglio di calcolo per JSON da copiare e incollare nella Mr. Data Converter
- uso Curl (come esposizione qui sopra) per aggiungere documenti/aggiornamento
Il problema è che la prima volta aggiungo nuovi documenti, tutto funziona perfettamente, tuttavia la prossima volta che invio gli stessi documenti, ottengo il seguente errore per ogni documento:
... {"id": "28", "errore": "conflitto", "motivo ":" Conflitto di aggiornamento del documento. "} ...
C'è un modo per aggiornare un documento esistente senza includere una proprietà _rev ?
Il gestore di aggiornamento sembra essere la soluzione ideale per l'aggiornamento dei dati. Sarà più veloce perché non devi scaricare tutti i documenti, unirli lato client e caricarli di nuovo. Invece il gestore dell'aggiornamento può fare la fusione per te con 1/3 delle attività di rete! –
@DobesVandermeer che non è universale. Poiché il gestore aggiornamenti non supporta le operazioni batch, questa è una richiesta per aggiornamento/persist. Se devi eseguire più di 2-4 di essi contemporaneamente, esegui operazioni batch perché in genere richiedono 2-4 richieste, a seconda delle circostanze, ad esempio per l'aggiornamento di 10 documenti. Ovviamente se usi '" new_edits ": false' puoi eseguire il batch persistere/sostituire in una richiesta, ma sappi che' new_edits' è [destinato a essere usato dal replicatore] (http://goo.gl/EFFofn)).Uno svantaggio è che non conserva la cronologia delle revisioni, mi chiedo se questo potrebbe interferire con la replica ... –
@DominykasMostauskis ah sì, buon punto. L'OP potrebbe voler eseguire un download batch, calcolare i nuovi valori e caricare in batch, con un numero inferiore di transazioni complessive. Finché tutto si adatta alla memoria. –