Cassandra通过JSON中的字段查询

时间:2017-11-01 19:08:44

标签: json node.js cassandra cql

我正在使用最新的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作为客户端驱动程序。

2 个答案:

答案 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类型,则需要添加一些引号。