将 JSON 补丁转换为 pymongo
项目描述
jsonpatch2pymongo
介绍
- 这是jsonpatch 到 mongodb和jsonpatch 到 mongodb 的端口 - golang到 python 语言。
- 任何想使用 pymongo 的 update_many() 函数将 2 个 JSON 数据之间的差异应用到 mongodb 的人都会从中受益。
如何使用
首先,您需要获取jsonpatch包生成的补丁列表。
>>> src = {'foo': 'bar', 'numbers': [1, 3, 4, 8]}
>>> dst = {'baz': 'qux', 'numbers': [1, 4, 7]}
>>> patch = jsonpatch.JsonPatch.from_diff(src, dst)
# or equivalently
>>> patch = jsonpatch.make_patch(src, dst)
>>> patch.patch
[{'op': 'remove', 'path': '/foo'}, {'op': 'add', 'path': '/baz', 'value': 'qux'}, {'op': 'remove', 'path': '/numbers/1'}, {'op': 'add', 'path': '/numbers/2', 'value': 7}, {'op': 'remove', 'path': '/numbers/3'}]
一旦补丁(每个补丁的列表)可用,您可以将其传递给此函数
>>> update = jsonpatch2pymongo(patch.patch)
>>> update
{'$set': {'baz': 'qux'}, '$unset': {'foo': 1, 'numbers.1': 1, 'numbers.3': 1}, '$push': {'numbers': {'$each': [7], '$position': 2}}}
最后,您可以传入updatepymongo 的 update 或 update_many 函数
db.collection.update_many(filter, update)
测试用例
- 安装pytest包并
python -m pytest -v在根目录下运行。 - 然后 pytest 将自动运行 test_main.py ,其中包括从原始 javascript 测试用例移植的各种测试用例。
代码风格
black -l 100
设置预提交挂钩
- 中指定的插件
.pre-commit-config.yml将在您提交更改之前使用。 - 如何启用预提交挂钩
pip install pre-commit
pre-commit install
项目详情
关
jsonpatch2pymongo -0.1.2-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 441edb0c4fb449fa8102aea027c17c5775e104b025a7f27bdf9e68600c02d19e |
|
| MD5 | bec44630d872b620e336bf1e4374a11a |
|
| 布莱克2-256 | 05af822d13401d3ddbc2bbbda689c2ede483162792c029214ba646acb2a435cd |