在mongoengine中切换集合以查找查询

Ham*_*FzM 2 python mongodb mongoengine python-2.7

我已经阅读了有关切换集合以保存文档的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
Run Code Online (Sandbox Code Playgroud)

但问题是当我想在交换机集合switch_collection中找到保存的文件时根本不起作用.

with switch_collection(Group, 'group2000') as GroupT:
    GroupT.objects.get(name="hello Group 2000 collection!")  # Finds in group2000 collection
Run Code Online (Sandbox Code Playgroud)

小智 8

作为mongoengine==0.10.0 mongoengine.context_managers.switch_collection(cls, collection_name) 用作"与switch_collection(集团,'组1’)作为组:"在示例中不起作用的内部功能.它给出了unboundlocalerror.简单了解现有资源是:

要得到:

new_group = Group.switch_collection(Group(),'group1')
from mongoengine.queryset import QuerySet
new_objects = QuerySet(Group,new_group._get_collection())
Run Code Online (Sandbox Code Playgroud)

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

要保存:

group_obj = Group()
group_obj.switch_collection('group2')
group_obj.save()
Run Code Online (Sandbox Code Playgroud)