Skip to main content

将 JSON 补丁转换为 pymongo

项目描述

代码风格:黑色

jsonpatch2pymongo

介绍

如何使用

首先,您需要获取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 (4.7 kB 查看哈希

已上传 py3