Vorrei (idealmente) come aggiornare una riga in Cassandra utilizzando puro JSON (ad esempio, analogo alla dichiarazione CQL "INSERT INTO <table_name> JSON '<json_object_string>';
"). Tuttavia, non sembra che tale funzionalità esista tramite l'istruzione UPDATE di CQL.Esiste un modo elegante per eseguire un aggiornamento JSON tramite CQL (Cassandra)?
Un approccio (cervello morto) che ho considerato era quello di eliminare e quindi reinserire la riga pertinente. Tuttavia, questo approccio ha sicuramente i suoi svantaggi, quindi, eliminandolo dal mio set di considerazione.
Ho implementato una versione che utilizza l'istruzione CQL "UPDATE <table_name> SET <key1> = '<new_value1>', <key2> = '<new_value2>', ..., <keyN> = '<new_valueN>';
". Tuttavia, se ci fosse qualcosa come "UPDATE <table_name> JSON '<new_json_object_string>';
", mi piacerebbe davvero saperlo.
Andy, ho appena determinato che INSERT fa anche un UPDATE durante lo sviluppo dei miei test. Per la mia attuale applicazione, questo comportamento (INSERT fa un UPDATE) potrebbe essere un po 'problematico se si rivelano casi in cui INSERT deve solo INSERIRE se la coppia chiave/valore non esiste. In tal caso, sembra che avrei bisogno di leggere per determinare se la coppia chiave/valore esiste o meno prima di consentire l'INSERIMENTO. Ugh, in tal caso ... –
Se sei preoccupato di sostituire un record esistente puoi usare 'INSERT INTO
Andy, non l'ho ancora provato, ma credo che "INSERIRE IN
La funzionalità è ora disponibile in CQL 5.1. La sintassi è:
L'opzione
DEFAULT UNSET
rende sovrascrivere solo i valori trovati nella stringa JSON. Pertanto, ad esempio, se si hanno altre colonne (ad es. Colonna3, colonna4) con i dati nel record, tali colonne manterranno i loro dati originali quando viene eseguita l'istruzione di inserimento precedente.fonte
2018-03-02 21:59:53 Tanvir
Problemi correlati