如何在MonetDB中使用JSON

时间:2014-11-21 12:37:59

标签: json monetdb

MonetDB文档说,MonetDB支持JSON,但我找不到任何例子。 当我尝试在MonetDB客户端中实现此查询时:

   json.filter({ "store": {    
    "bicycle": {
      "color": "red",
      "price": 19.95
    }}},'$')    

我收到此错误:语法错误,意外IDENT:" json"

2 个答案:

答案 0 :(得分:1)

来自https://www.monetdb.org/pipermail/users-list/2014-November/007700.html

在MonetDB中,JSON是一种列类型,因此您首先需要定义一个类型为JSON的列的表,如:

CREATE TABLE a (js JSON);

将JSON文档插入表格后,您可以执行以下查询:

SELECT json.filter(js, 'store') FROM a;

答案 1 :(得分:1)

您是否尝试在第一个参数旁边放置单引号?

以下适用于我。

select json.filter('{ "store": {
    "bicycle": {
      "color": "red",
      "price": 19.95
    }}}', '$');

结果是:

[{ "store": {
"bicycle": {
  "color": "red",
  "price": 19.95
}}}]

我也试过这个:

select json.filter('{ "store": {
  "bicycle": {
    "color": "red",
    "price": 19.95
  }}}', '$.store.bicycle.color');

结果是:

["red"]

将颜色作为字符串返回:

select json.text(json.filter('{ "store": {
  "bicycle": {
    "color": "red",
    "price": 19.95
  }}}', '$.store.bicycle.color'));

......我明白了:

red

如果我尝试:

select json.text(json.filter('{ "store": {
  "bicycle": {
    "color": "red",
    "price": 19.95
  }}}', '$.store.bicycle.price'));

...我以字符串的形式取回价格:

19.95

但我也可以把它作为一个数字取回来:

select json.number(json.filter('{ "store": {
      "bicycle": {
        "color": "red",
        "price": 19.95
      }}}', '$.store.bicycle.price'));