Mongoengine 事务如何进行?

Pat*_*r92 2 python mongodb mongoengine

我该如何做才能进行涉及 mongoengine 上两种以上不同类型文档更新的交易?

SeY*_*Dev 7

使用以下方法,您可以在 mongoengine 中使用事务注意,在这种方法中,您的查询必须是使用 pymongo 的原始查询

from mongoengine import *
from mongoengine.connection import get_connection, get_db

connect('testdb')

class TestDocument(Document):
    name = StringField(required=True)


mongo = get_connection()
with mongo.start_session() as session:
    with session.start_transaction():
        try:
            test = TestDocument(name='test')
            mongo.get_database(get_db()).get_collection('test_document').insert_one(
                test.to_mongo(), session=session
            )
            # just for raising an exception
            err = 1 / 0
        except Exception as e:
            print(e)
            session.abort_transaction()
Run Code Online (Sandbox Code Playgroud)


Dmi*_*tri 5

这是请求的 mongoengine 功能: https ://github.com/MongoEngine/mongoengine/issues/1839

评论中描述了直接基于 pymongo 的解决方法。