首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Flask-Mongoengine中切换集合和保存

在Flask-Mongoengine中切换集合和保存
EN

Stack Overflow用户
提问于 2015-07-15 13:33:21
回答 2查看 1.8K关注 0票数 6

我在将文档保存到新集合中,然后从旧集合中删除它们时遇到问题。我创建一个新对象,如下所示:

代码语言:javascript
复制
class Test(mongo.Document):
     field = mongo.StringField()

t = Test(field="test")
t.switch_collection('default')
t.save()
t.switch_collection('switched')
t.save()
t.switch_collection('default')
t.delete()

它似乎只对默认集合执行第一次保存,然后不执行任何操作。我已经尝试了一堆不同的选项,比如在每次切换/保存后重新加载对象,以及从mongoengine上下文管理器重新加载对象:

代码语言:javascript
复制
with switch_collection(Test, 'mongoswitch') as test:
    test(field="switch").save()

我的mongo设置如下(首先调用):

代码语言:javascript
复制
 app.config["MONGODB_SETTINGS"] = {'db': 'TestDB'}
 mongo = MongoEngine(app)

在Python 3.4中使用mongoengine 0.10和pymongo 2.8.1。

有谁有主意吗?非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2019-11-05 18:42:41

我明白这是个老问题,但也许有人也有同样的问题..我认为这是因为当您有一个设置了id的文档时,通过调用t.save(),您只更新了集合中的现有文档。要真正保存它,您需要调用t.save(force_insert=True)

票数 1
EN

Stack Overflow用户

发布于 2015-07-17 18:56:19

您是否收到任何错误?这对我来说很有效。检查您的mongo数据库集合中的记录。

来自mongoengine docs的一个可能的原因

“在使用上下文管理器之前,请确保任何别名都已注册到register_connection()或connect()。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31422196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档