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。所有非复制操纵器将首先应用(以便用户的文档将得到适当更新),然后是复制操纵器。
-