son_manipulator --可以在保存或检索子文档时编辑子文档的操纵器

DEPRECATED :可以在子对象进入和退出数据库时编辑其子对象的操纵器。

这个 SONManipulator API作为一种转换数据的技术有其局限性。相反,在将输出文档传递给PyMongo之前,用您自己的代码转换输出文档,并在从PyMongo接收到传入文档后转换这些文档,这将更加灵活和直接。子操纵器将在4.0中从PyMongo中删除。

PyMongo是的 not 将子操纵器应用于传递到现代方法的文档 bulk_write()insert_one()insert_many()update_one()update_many() . 儿子操纵者是 not 适用于用现代方法返回的文件 find_one_and_delete()find_one_and_replace()find_one_and_update() .

class pymongo.son_manipulator.AutoReference(db)

透明地引用和取消引用已保存的嵌入对象。

这个操纵器可能只应该在NamespaceInjector也被使用时使用,否则就没有太大意义了-文档只有在具有 _ns 字段。

注意:如果你有一个循环引用,这将表现得很糟糕。

TODO:这仅适用于同一数据库中的文档。为了解决这个问题,我们需要添加一个DatabaseInjector _db 然后利用可选的 数据库 支持DBRefs。

transform_incoming(son, collection)

用DBRefs替换嵌入的文档。

transform_outgoing(son, collection)

用嵌入的文档替换DBRefs。

will_copy()

我们需要复制,这样用户的文档就不会得到转换的引用。

class pymongo.son_manipulator.NamespaceInjector

一个子操纵器,用于添加n ns字段。

transform_incoming(son, collection)

将该字段添加到传入对象

class pymongo.son_manipulator.ObjectIdInjector

子操纵器,如果缺少该字段,则添加该字段。

在 2.7 版更改: PyMongo不再使用ObjectIdInjector,但为了向后兼容而保留在这个模块中。

transform_incoming(son, collection)

如果缺少_id字段,请添加该字段。

class pymongo.son_manipulator.ObjectIdShuffler

一个子操纵器,用于将_id移动到第一个位置。

transform_incoming(son, collection)

把你的身份证移到前面。

will_copy()

我们需要复制以确保我们是在和儿子打交道,而不是口述。

class pymongo.son_manipulator.SONManipulator

一个低级操纵者。

只需恢复并保存对象而不更改操纵器。

transform_incoming(son, collection)

操纵传入的子对象。

参数
  • son :要插入数据库的子对象

  • collection :要插入对象的集合

transform_outgoing(son, collection)

操作传出的子对象。

参数
  • son :正在从数据库检索的子对象

  • collection :存储此对象的集合

will_copy()

这个儿子操纵者会复制一份收到的文件吗?

确实需要生成副本的派生类应重写此方法,返回True而不是False。所有非复制操纵器将首先应用(以便用户的文档将得到适当更新),然后是复制操纵器。