# MongoDB Schema — book-mcp 3 个 collection(无固定 schema,字段约束在 `db/models.py`): ## book(教辅) | 字段 | 类型 | 索引 | |---|---|---| | `_id` | int | PK(自增,counters.book_id)| | `name` | str | uk_name_version 一部分 | | `subject` | str \| null | | | `grade` | str \| null | | | `version` | str \| null | uk_name_version 一部分 | | `type` | str \| null | | | `zip_path` | str | | | `zip_sha256` | str | **uk_book_zip_sha 唯一** | | `zip_size` | int | | | `status` | enum | idx_book_status | | `total_count` | int | | | `success_count` | int | | | `failed_count` | int | | | `error_msg` | str \| null | | | `created_at` | datetime | idx_book_created | | `updated_at` | datetime | | | `created_by` | str \| null | | | `is_deleted` | int (0/1) | uk_name_version 一部分 | ## book_document(教辅文档) | 字段 | 类型 | 索引 | |---|---|---| | `_id` | str (16 字符 sha1) | **uk_doc_id 唯一** | | `book_id` | int | idx_book_order | | `original_filename` | str | | | `original_path` | str | | | `title` | str \| null | | | `doc_type` | enum | | | `order_index` | int | idx_book_order | | `status` | enum | idx_doc_status | | `error_msg` | str \| null | | | `created_at` | datetime | | | `updated_at` | datetime | | ## document_file(文档文件) | 字段 | 类型 | 索引 | |---|---|---| | `_id` | int | PK(自增,counters.file_id)| | `doc_id` | str | **uk_doc_type 联合唯一** + idx_bucket_key | | `file_type` | enum | uk_doc_type 联合唯一 | | `object_key` | str | idx_bucket_key | | `object_bucket` | str | idx_bucket_key | | `size` | int | | | `checksum` | str \| null | | | `url` | str \| null | | | `meta` | object \| null | | | `created_at` | datetime | | ## counters(自增 ID 模拟) | _id (name) | seq | |---|---| | `book_id` | int | | `file_id` | int | ## 初始化 ```bash # 自动建所有索引(幂等) /tmp/wordparse_venv/bin/python book_mcp_server.py --init-db ``` 输出: ``` ✓ MongoDB 已就绪(db: book_mcp, collections: ['book', 'book_document', 'document_file']) ✓ 8 个索引创建完成 ```