JSON 在现代数据库中的应用:PostgreSQL、MongoDB 等

databasesjsonpostgresqlmongodb

数据库中的 JSON 支持已经显著发展。大多数现代数据库现在都提供原生 JSON 功能,但处理方式各不相同。

PostgreSQL JSON 支持

PostgreSQL 提供两种 JSON 数据类型:

  • JSON — 以文本存储,读取时解析
  • JSONB — 二进制格式,可索引,查询更快
  • -- 创建带 JSONB 列的表

    CREATE TABLE products (

    id SERIAL PRIMARY KEY,

    name TEXT,

    attributes JSONB

    );

    -- 查询嵌套 JSON

    SELECT * FROM products

    WHERE attributes->>'color' = 'blue';

    -- 索引 JSON 字段

    CREATE INDEX idx_color ON products ((attributes->>'color'));

    JSONB 运算符

  • -> — 获取 JSON 对象字段(JSON 类型)
  • ->> — 获取 JSON 对象字段(文本类型)
  • #> — 路径获取
  • @> — 包含
  • ? — 键是否存在
  • MongoDB:文档数据库

    MongoDB 以 BSON(二进制 JSON)格式存储数据:

    {

    "_id": "ObjectId('...')",

    "name": "无线耳机",

    "price": 79.99,

    "specs": {

    "battery": "30小时",

    "bluetooth": "5.3"

    },

    "tags": ["音频", "无线"]

    }

    MongoDB JSON 查询

    db.products.find({

    "specs.bluetooth": "5.3",

    price: { $lt: 100 }

    });

    MySQL JSON 函数

    -- 提取值

    SELECT JSON_EXTRACT(data, '$.name') FROM users;

    -- 简写形式

    SELECT data->>'$.name' FROM users;

    -- 创建 JSON

    SELECT JSON_OBJECT('name', 'Alice', 'age', 30);

    选择合适的方案

  • PostgreSQL JSONB — 适合结构化数据加上偶尔的 JSON 字段
  • MongoDB — 适合无模式、面向文档的数据
  • SQLite JSON — 适合嵌入式/本地应用
  • Redis — 适合 JSON 缓存和快速访问
  • 使用我们的 JSON 转 CSV 工具 将数据库结果导出为 CSV。

    相关工具