Je voudrais (idéalement) mettre à jour une ligne dans Cassandra en utilisant du JSON pur (par exemple, analogue à l'instruction CQL "INSERT INTO <table_name> JSON '<json_object_string>';
"). Cependant, il ne semble pas qu'une telle fonctionnalité existe via l'instruction CQL UPDATE.Existe-t-il un moyen élégant d'effectuer une mise à jour JSON via CQL (Cassandra)?
Une approche (cerveau mort) que j'ai considéré était de supprimer, puis réinsérer la ligne pertinente. Cependant, cette approche a certainement ses inconvénients - donc, l'éliminer de mon ensemble de considération.
J'ai implémenté une version utilisant l'instruction CQL "UPDATE <table_name> SET <key1> = '<new_value1>', <key2> = '<new_value2>', ..., <keyN> = '<new_valueN>';
". Cependant, s'il y avait quelque chose comme «UPDATE <table_name> JSON '<new_json_object_string>';
», j'aimerais vraiment savoir à ce sujet.
Andy, je viens de déterminer que INSERT effectue également une mise à jour lors du développement de mes tests. Pour mon application actuelle, ce comportement (INSERT fait un UPDATE) peut être un peu problématique s'il s'avère qu'il y a des cas où INSERT devrait seulement INSERT si la paire clé/valeur n'existe pas. Dans ce cas, il semble que je devrais lire afin de déterminer si la paire clé/valeur existe avant d'autoriser l'insertion. Ugh, dans ce cas ... –
Si vous êtes préoccupé par le remplacement d'un enregistrement existant, vous pouvez utiliser 'INSERT INTO
Andy, je ne l'ai pas encore testé, mais je crois que "INSERT INTO
La fonctionnalité est maintenant disponible en CQL 5.1. La syntaxe est:
L'option
DEFAULT UNSET
fait remplacer que les valeurs trouvées dans la chaîne JSON. Ainsi, par exemple, si vous avez d'autres colonnes (par exemple colonne3, colonne4) avec des données dans l'enregistrement, ces colonnes conservent leurs données d'origine lorsque l'instruction d'insertion ci-dessus est exécutée.Source
2018-03-02 21:59:53 Tanvir
Questions connexes