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

用户

我读过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}$


已被浏览了2715次
更新日期: 2020-10-26 06:56:16
2 个回答
fefe Tyson

截至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}$
评论 - 2020年8月7日 23:52
fefe Tyson

虽然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)
评论 - 2020年8月7日 23:52

最新Python问答

推荐Python问答