无法保存腌制的 MongoEngine 文档

Can't save pickled MongoEngine document

我已经将一些 mongoengine 文档转储到 pickle 文件中。当我在运行时加载它们并尝试将它们保存到 Db 时,没有出现错误,但没有保存文档。

这是一个代码示例:

    with open("documents.list", "rb") as infile:
        documents = pickle.load(infile)
        for document in documents:
            if MyDocument.objects(id=document.id).first() is None:
                document.save()

我已验证 document object 与正确的 collection 和数据库相关联。在上面的代码中,它输入了 if 所以 document.save() 被执行了。但是我的 collection...

中没有文件

这可能是因为您的文档在被 pickle 时已经处于 saved 状态,因此它们不会再次插入到 Db 中。您可以通过更改 document.save() 行强制在数据库中创建它们:

document.save(force_insert=True)