È possibile utilizzare l'aggiornamento N1QL Stat. Google per Couchbase N1QL UPDATE sostituisce un documento già esistente con valori aggiornati.
aggiornamento:
UPDATE keyspace-ref [use-keys-clause] [set-clause] [unset-clause] [where-clause] [limit-clause] [returning-clause]
set-clausola:
SET path = expression [update-for] [ , path = expression [update-for] ]*
aggiornamento-per:
FOR variable (IN | WITHIN) path (, variable (IN | WITHIN) path)* [WHEN condition ] END
disinserito-clausola:
UNSET path [update-for] (, path [ update-for ])*
keyspace-ref: Specifies the keyspace for which to update the document.
È possibile aggiungere uno spazio dei nomi-nome facoltativo per lo spazio delle chiavi-nome in questo modo:
namespace-name:keyspace-name.
-usare i tasti-clausola: Specifica le chiavi degli elementi di dati da aggiornare. Opzionale. Le chiavi possono essere qualsiasi espressione.
set-clause: specifica il valore per un attributo da modificare.
unset-clause: rimuove l'attributo specificato dal documento.
aggiornamento-per: l'aggiornamento per clausola utilizza l'istruzione FOR per iterare su un array nidificato e SET o UNSET l'attributo specificato per ogni elemento corrispondente nell'array.
where-clause: specifica la condizione che deve essere soddisfatta affinché i dati vengano aggiornati. Opzionale.
limit-clause: specifica il numero massimo di oggetti che è possibile aggiornare. Questa clausola deve avere un numero intero non negativo come limite superiore. Opzionale.
restituzione-clausola: restituisce i dati aggiornati come specificato in result_expression.
privilegi RBAC
utente di eseguire l'istruzione UPDATE deve avere il privilegio query di aggiornamento sul keyspace bersaglio. Se l'istruzione contiene clausole che richiedono la lettura dei dati, come la clausola SELECT o la clausola RETURNING, allora è richiesto anche il privilegio Query Select sugli spazi delle chiavi indicati nelle rispettive clausole. Per ulteriori dettagli sui ruoli utente, vedere Autorizzazione.
Per esempio,
Per eseguire la seguente dichiarazione, l'utente deve avere il privilegio query di aggiornamento sulla travel-sample
.
UPDATE `travel-sample` SET foo = 5
Per eseguire la seguente dichiarazione, l'utente deve avere il privilegio query di aggiornamento sulla travel-sample
e Query Select privilegio beer-sample
.
UPDATE `travel-sample`
SET foo = 9
WHERE city = (SELECT raw city FROM `beer-sample` WHERE type = "brewery"
To execute the following statement, user must have the Query Update privilege on `travel-sample` and Query Select privilege on `travel-sample`.
UPDATE `travel-sample`
SET city = “San Francisco”
WHERE lower(city) = "sanfrancisco"
RETURNING *
Example
La seguente dichiarazione cambia il "tipo" del prodotto, "Odwalla-juice1" a "prodotto-succo".
UPDATE product USE KEYS "odwalla-juice1" SET type = "product-juice" RETURNING product.type
"results": [
{
"type": "product-juice"
}
]
Questa affermazione rimuove l'attributo "tipo" dallo spazio delle chiavi "prodotto" per il documento con il tasto "Odwalla-juice1".
UPDATE product USE KEYS "odwalla-juice1" UNSET type RETURNING product.*
"results": [
{
"productId": "odwalla-juice1",
"unitPrice": 5.4
}
]
Questa dichiarazione vengono annullati l'attributo "di genere" nella matrice "bambini" per il documento con la chiave, "Dave" nella spazio delle chiavi tutorial.
UPDATE tutorial t USE KEYS "dave" UNSET c.gender FOR c IN children END RETURNING t
"results": [
{
"t": {
"age": 46,
"children": [
{
"age": 17,
"fname": "Aiden"
},
{
"age": 2,
"fname": "Bill"
}
],
"email": "[email protected]",
"fname": "Dave",
"hobbies": [
"golf",
"surfing"
],
"lname": "Smith",
"relation": "friend",
"title": "Mr.",
"type": "contact"
}
}
]
A partire dalla versione 4.5.1, l'istruzione UPDATE è stata migliorata per impostare gli elementi di nidificazione nidificati. La clausola FOR viene migliorata per valutare funzioni ed espressioni e la nuova sintassi supporta più espressioni nidificate FOR per accedere e aggiornare i campi negli array nidificati. Ulteriori livelli di array sono supportati concatenando le clausole FOR.
Esempio
UPDATE default
SET i.subitems = (ARRAY OBJECT_ADD(s, 'new', 'new_value')
FOR s IN i.subitems END)
FOR s IN ARRAY_FLATTEN(ARRAY i.subitems
FOR i IN items END, 1) END;
Ecco come funziona Couchbase/CouchDB. Ogni documento deve essere scritto nel suo complesso. non puoi scrivere singole parti. – WiredPrairie