跳转至

数据存储

模块概述

数据存储模块基于MongoDB提供高效可靠的数据存储解决方案,专为应用数据持久化设计。本模块支持多种数据类型存储、复杂查询和索引优化,让您无需关心底层数据库实现细节,专注于业务逻辑开发。

功能特点

  • MongoDB驱动:基于MongoDB优化的存储引擎,支持文档型数据存储
  • 应用隔离:每个应用拥有独立的数据存储空间,确保数据安全
  • 集合管理:自动创建和管理数据集合,支持动态扩展
  • 数据模型:灵活的数据模型定义,无需提前设计严格的表结构
  • 查询能力:强大的查询API,支持复杂条件、排序、分页和聚合操作
  • 索引优化:自动和手动索引管理,提升查询性能
  • 数据验证:支持JSON Schema验证规则,确保数据完整性

系统架构

graph TD
    A[应用数据库] --> B[集合管理]
    A --> C[数据模型]
    A --> D[查询引擎]
    A --> E[索引管理]
    A --> F[数据验证]
    B --> G[自动创建]
    B --> H[权限控制]
    D --> I[基础查询]
    D --> J[聚合管理]
    D --> K[全文检索]

快速开始

1. 创建集合

// 创建新集合
fetch('{your api server}/storage/v1/collections', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
  },
  body: JSON.stringify({
    name: 'products',
    description: '产品数据集合',
    validation: {
      // 可选的JSON Schema验证规则
      $jsonSchema: {
        bsonType: 'object',
        required: ['name', 'price'],
        properties: {
          name: {
            bsonType: 'string',
            description: '产品名称'
          },
          price: {
            bsonType: 'number',
            description: '产品价格'
          }
        }
      }
    }
  })
})
.then(response => response.json())
.then(data => console.log(data));

2. 插入数据

// 向集合中插入数据
fetch('{your api server}/storage/v1/collections/products/documents', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
  },
  body: JSON.stringify({
    name: '智能手机',
    price: 3999,
    description: '最新款智能手机',
    specs: {
      color: '黑色',
      storage: '128GB'
    }
  })
})
.then(response => response.json())
.then(data => console.log(data));

3. 查询数据

1
2
3
4
5
6
7
8
9
// 查询集合数据
fetch('{your api server}/storage/v1/collections/products/documents?query={"price":{"$lt":5000}}&sort={"price":1}&limit=10', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
  }
})
.then(response => response.json())
.then(data => console.log(data));

相关API

数据存储涉及以下API模块:

API模块 说明 文档链接 在线调试
应用数据库API 管理应用数据集合和文档 查看文档 调试

数据操作

支持的查询操作符

操作符 说明 示例
$eq 等于 {"field": {"$eq": value}}
$gt 大于 {"field": {"$gt": value}}
$gte 大于等于 {"field": {"$gte": value}}
$lt 小于 {"field": {"$lt": value}}
$lte 小于等于 {"field": {"$lte": value}}
$ne 不等于 {"field": {"$ne": value}}
$in 在数组中 {"field": {"$in": [value1, value2]}}
$nin 不在数组中 {"field": {"$nin": [value1, value2]}}
$and 逻辑与 {"$and": [{条件1}, {条件2}]}
$or 逻辑或 {"$or": [{条件1}, {条件2}]}
$regex 正则匹配 {"field": {"$regex": "pattern"}}

支持的更新操作符

操作符 说明 示例
$set 设置字段值 {"$set": {"field": value}}
$unset 删除字段 {"$unset": {"field": ""}}
$inc 增加数值 {"$inc": {"field": 5}}
$push 添加到数组 {"$push": {"field": value}}
$pull 从数组删除 {"$pull": {"field": value}}

最佳实践

  1. 数据模型设计
  2. 善用嵌入式文档减少关联查询
  3. 根据查询模式设计集合和文档结构
  4. 合理使用索引提升查询性能

  5. 查询优化

  6. 使用合适的查询条件限制结果集大小
  7. 避免在大集合上进行无索引查询
  8. 使用投影仅返回需要的字段

  9. 数据安全

  10. 使用数据验证规则确保数据完整性
  11. 实施适当的访问控制策略
  12. 定期备份重要数据

常见问题

  1. 问题:如何实现关系型数据查询? 解答:可以使用$lookup聚合操作实现类似SQL JOIN的功能,或使用应用层关联。

  2. 问题:如何优化大数据量查询性能? 解答:建立合适的索引、使用分页查询、限制返回字段,必要时考虑数据分片。

  3. 问题:数据库连接数限制如何处理? 解答:本服务自动管理连接池,开发者无需担心连接管理问题。服务会根据负载自动扩展。

评论