Есть ли способ вставить список json / карт в кассандру? - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь вставить список json в кассандру. Я создал столбец с именем medias, но не могу понять, как вставить медиас в этот столбец. Я пробовал использовать UDT, но, похоже, не работает. Но карты имеют типы данных Dynami c. Вот пример:

[{"id": "0c2ed74f-6937-490e-9385-6b1feb16e0bd", "name": "000009A.mp4", "mediaType": 1, "contentSize": 0 , "width": "480.0", "height": "480.0", "author": "ae89d4c5-6912-43c7-a6ee-6f740baef818", "created_at": "2020-08-02T11: 12: 59Z"}]

Кто-нибудь может подсказать мне, как я могу этого добиться? Любая помощь была бы замечательной.

EDIT Вот как я определил свою таблицу

CREATE TABLE post(
        id text, 
        title text,
        content text,
        author text,
        created_at text,
        updated_at text,
        medias list<frozen<media>>
        PRIMARY KEY(id,author)
);

И определяемый мной UDT:

CREATE TYPE media(
        id text,
        name text,
        mediaType int,
        contentSize int,
        width text,
        height text,
        author text,
        created_at text
                );

1 Ответ

0 голосов
/ 11 августа 2020

Если у вас есть известный список столбцов, вы можете вставить JSON напрямую. Любые отсутствующие столбцы будут иметь значение NULL. Cassandra очень эффективна при управлении разреженными таблицами.

CREATE TABLE post(
    id text,
    title text,
    content text,
    author text,
    created_at text,
    updated_at text,
    name text,
    mediaType int,
    contentSize int,
    width text,
    height text,
    PRIMARY KEY(id,author)
);

INSERT INTO post JSON '{ 
    "id": "0c2ed74f-6937-490e-9385-6b1feb16e0bd", 
    "name": "000009A.mp4", 
    "mediaType": 1, 
    "contentSize": 0, 
    "width": "480.0", 
    "height": "480.0", 
    "author": "ae89d4c5-6912-43c7-a6ee-6f740baef818", 
    "created_at": "2020-08-02T11:12:59Z"
}';

См. https://docs.datastax.com/en/cql-oss/3.3/cql/cql_using/useInsertJSON.html

...