跳转到主要内容

从JSON Schema生成MongoDB资源

项目描述

mongospawn 是一个工具,用于根据JSON Schema规范生成MongoDB资源。

主要近期用途案例是支持国家微生物组数据协作(NMDC)试点项目。特别是,给定一个包含所有数组类型属性和每个数组项都是对JSON Schema definitions(见NMDC示例)中定义的 $ref 引用的JSON Schema,mongospawn 可以生成MongoDB $jsonSchema 文档,用作对应于原始JSON Schema数组类型属性的数据库集合的验证器。MongoDB对JSON Schema的实现不支持$refdefinitions等,因此mongospawn 会扩展引用以生成适当的每个集合的schema文档。

除了生成派生schema文档外,mongospawn 还可以通过pymongo驱动程序生成新的数据库/集合,并设置模式验证,并且还可以通过mongogrant管理对生成资源的访问。

设置

开发

pip install -e .[dev]

更新依赖项版本

make update

使用固定依赖项进行可重复测试

make

用法

使用NMDC的JSON Schema的示例

from mongospawn.schema import dbschema_from_file, collschemas_for
from pymongo import MongoClient

client = MongoClient()
db = client.nmdc_test

dbschema = dbschema_from_file("nmdc.schema.json")
collschemas = collschemas_for(dbschema)
for name in collschemas:
    db.drop_collection(name)
    db.create_collection(name, validator={"$jsonSchema": collschemas[name]})
    print(f"created {name} collection")
# created activity_set collection
# created biosample_set collection
# created data_object_set collection
# created omics_processing_set collection
# created study_set collection

例如,现在如果您尝试插入一个不符合规范的JSON文档,将引发一个pymongo.errors.WriteError异常。

db.biosample_set.insert_one({"not_a_real_field": 1})
# => WriteError: Document failed validation...

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

mongospawn-0.5.10.tar.gz (18.6 kB 查看哈希值)

上传时间

构建分发

mongospawn-0.5.10-py2-none-any.whl (4.8 kB 查看哈希值)

上传时间 Python 2

由以下提供支持