CREATE TABLE odordb.test_table (
id int PRIMARY KEY,
exp map<text,double>
);
INSERT INTO odordb.test_table JSON '{"id":1,
"exp": {
"EDIBLE": 10.5,
"BAKERY": 0.0,
"SWEET": 0.0,
"FRUIT": 0.0,
"FISH": 0.0,
"GARLIC": 0.0,
"SPICES": 0.0,
"COLD": 0.0,
"SOUR": 50.0,
"BURNT": 0.0,
"ACID" : 0.0,
"WARM": 0.0,
"MUSKY": 0.0,
"SWEATY" : 0.0,
"AMMONIA_URINOUS": 30.0,
"DECAYED": 0.0,
"WOOD": 0.0,
"GRASS": 0.0,
"FLOWER": 0.0,
"CHEMICAL": 0.0
}
}';
key文字列には / が使えないため、"AMMONIA/URINOUS" → "AMMONIA_URINOUS" に変更。
→ 再度確認するとこの場合は / も使えました。私の勘違いでした。上のスクリプトは変更しました。(2021.10.30)
上のスクリプトファイルをcqlshに読み込ませるには、test_table.cqlのあるディレクトリに移動して、以下のどちらかの方法で行う。
なお、すでにキースペース odordbが作成されているとする。
確認
cqlsh> select * from odordb.test_table ; id | exp ----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 | {'ACID': 0, 'AMMONIA/URINOUS': 30, 'BAKERY': 0, 'BURNT': 0, 'CHEMICAL': 0, 'COLD': 0, 'DECAYED': 0, 'EDIBLE': 10.5, 'FISH': 0, 'FLOWER': 0, 'FRUIT': 0, 'GARLIC': 0, 'GRASS': 0, 'MUSKY': 0, 'SOUR': 50, 'SPICES': 0, 'SWEATY': 0, 'SWEET': 0, 'WARM': 0, 'WOOD': 0} (1 rows)この形式だと
てなこともできる
上のUPDATE 実行後
cqlsh> select * from odordb.test_table; id | exp ----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 | {'ACID': 90, 'AMMONIA/URINOUS': 30, 'BAKERY': 0, 'BURNT': 0, 'CHEMICAL': 0, 'COLD': 0, 'DECAYED': 0, 'EDIBLE': 10.5, 'FISH': 0, 'FLOWER': 0, 'FRUIT': 0, 'GARLIC': 0, 'GRASS': 0, 'MUSKY': 0, 'SOUR': 50, 'SPICES': 0, 'SWEATY': 0, 'SWEET': 0, 'WARM': 0, 'WOOD': 0} (1 rows)JSON形式でselectを表示させると
cqlsh> select JSON * from odordb.test_table ; [json] ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {"id": 1, "exp": {"ACID": 90.0, "AMMONIA/URINOUS": 30.0, "BAKERY": 0.0, "BURNT": 0.0, "CHEMICAL": 0.0, "COLD": 0.0, "DECAYED": 0.0, "EDIBLE": 10.5, "FISH": 0.0, "FLOWER": 0.0, "FRUIT": 0.0, "GARLIC": 0.0, "GRASS": 0.0, "MUSKY": 0.0, "SOUR": 50.0, "SPICES": 0.0, "SWEATY": 0.0, "SWEET": 0.0, "WARM": 0.0, "WOOD": 0.0}} (1 rows)expだけJSON形式で表示
cqlsh> select JSON exp from odordb.test_table ; [json] ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {"exp": {"ACID": 90.0, "AMMONIA/URINOUS": 30.0, "BAKERY": 0.0, "BURNT": 0.0, "CHEMICAL": 0.0, "COLD": 0.0, "DECAYED": 0.0, "EDIBLE": 10.5, "FISH": 0.0, "FLOWER": 0.0, "FRUIT": 0.0, "GARLIC": 0.0, "GRASS": 0.0, "MUSKY": 0.0, "SOUR": 50.0, "SPICES": 0.0, "SWEATY": 0.0, "SWEET": 0.0, "WARM": 0.0, "WOOD": 0.0}} (1 rows)expの特定のkeyの値表示
cqlsh> select exp['AMMONIA/URINOUS'] from odordb.test_table; exp['AMMONIA/URINOUS'] ------------------------ 30 (1 rows)