我正在使用最新的cassandra版本并试图像下面那样保存JSON并且成功了,
INSERT INTO mytable JSON '{"username": "myname", "country": "mycountry", "userid": "1"}'
以上查询保存记录,如
"rows": [
{
"[json]": "{\"userid\": \"1\", \"country\": \"india\", \"username\": \"sai\"}"
}
],
"rowLength": 1,
"columns": [
{
"name": "[json]",
"type": {
"code": 13,
"type": null
}
}
]
现在我想根据用户ID检索记录:
SELECT JSON * FROM mytable WHERE userid = fromJson("1") // but this query throws error
所有这些都发生在节点/快递应用程序中,我使用dse-driver作为客户端驱动程序。
答案 0 :(得分:2)
CQL命令的工作原理如下,
SELECT JSON * FROM mytable WHERE userid =" 1";
但是如果必须通过dse-driver执行,那么下面的代码段就可以了,
let query = 'SELECT JSON * FROM mytable WHERE userid = ?';
client.execute(query, ["1"], { prepare: true });
客户端在哪里,
const dse = require('dse-driver');
const client = new dse.Client({
contactPoints: ['h1', 'h2'],
authProvider: new dse.auth.DsePlainTextAuthProvider('username', 'pass')
});
答案 1 :(得分:0)
假设user-id是分区键,并假设您要检索与id为1的用户对应的JSON对象,则应尝试:
SELECT JSON * FROM mytable WHERE userid=1;
如果userid是text类型,则需要添加一些引号。