mongoengine中用于查找查询的开关集合

2024-04-26 09:46:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我读过mongoengine文档中关于将集合切换到保存文档的内容。并测试此代码,它成功地工作了:

from mongoengine.context_managers import switch_db

class Group(Document):
    name = StringField()

Group(name="test").save()  # Saves in the default db

with switch_collection(Group, 'group2000') as Group:
    Group(name="hello Group 2000 collection!").save()  # Saves in group2000 collection

但问题是当我想在switch collection中查找保存的文档时,switch_collection根本不起作用。在

^{pr2}$

Tags: 代码nameinfrom文档内容dbsave
2条回答

截至mongoengine==0.10.0mongoengine.context_managers.switch_collection(cls, collection_name) 在示例中用作“with switch_collection(Group,'group1')as Group:” 在函数内部不工作。它给出unboundlocalerror。利用现有资源的简单方法是:

获得:

new_group = Group.switch_collection(Group(),'group1')
from mongoengine.queryset import QuerySet
new_objects = QuerySet(Group,new_group._get_collection())

使用new_objects.all()获取所有对象等

保存:

^{pr2}$

虽然Prachetos Sadhukhan answer适合我,但我更喜欢直接获取收集,而不是依赖私有的\u get_收集方法:

from mongoengine import connection
new_group_collection = connection.get_db()['group1']
from mongoengine.queryset import QuerySet
new_objects = QuerySet(Group, new_group_collection)

相关问题 更多 >