从JSON Schema生成MongoDB资源
项目描述
mongospawn
是一个工具,用于根据JSON Schema规范生成MongoDB资源。
主要近期用途案例是支持国家微生物组数据协作(NMDC)试点项目。特别是,给定一个包含所有数组类型属性和每个数组项都是对JSON Schema definitions
(见NMDC示例)中定义的 $ref
引用的JSON Schema,mongospawn
可以生成MongoDB $jsonSchema
文档,用作对应于原始JSON Schema数组类型属性的数据库集合的验证器。MongoDB对JSON Schema的实现不支持$ref
、definitions
等,因此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 查看哈希值)
关闭
mongospawn-0.5.10.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 992c26c825377ffd202783d6f39d3c369148ef3dd3b5b94512aabb81474037ff |
|
MD5 | 7050c5c3f138a518a45716e4ffc42080 |
|
BLAKE2b-256 | 590f7c10b0dec61acc4ac471e1d8ee42838fc1f5decea7c29a57cb2fd8d8f9eb |
关闭
mongospawn-0.5.10-py2-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 54c7478ee8180267050ce095dd4ac7796d717028a01ce07e1300bec7a9b5ed98 |
|
MD5 | 2b29b6800a82c09b88d41cea80bab9b4 |
|
BLAKE2b-256 | 534255b275879e9aa09c5b4e008b7bf5fdd00bfe640510521f42cec7af480e9a |