在mongoengine中查找查询的开关集合

问题描述:

我读过关于切换集合以保存文档的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中保存的文档不会在所有的工作。

with switch_collection(Group, 'group2000') as GroupT: 
    GroupT.objects.get(name="hello Group 2000 collection!") # Finds in group2000 collection 
+0

你可以尝试指定分贝你正在查询该记录? GroupT.objects.using(dbname).filter(name =“hello Group 2000 collection!”) – 2014-11-02 10:55:32

+0

@SyedMauzeRehan与其他集合相同。 – 2014-11-02 10:57:21

作为用作mongoengine==0.10.0mongoengine.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()) 

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

为了节省:

group_obj = Group() 
group_obj.switch_collection('group2') 
group_obj.save() 
+0

太棒了,正在寻找这个。 – noPE 2015-09-21 11:29:55

+0

在这里感知很多upvotes .....正在寻找这个! – NoobEditor 2015-09-22 12:06:40