在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
作为用作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())
使用new_objects.all()
让所有对象等
为了节省:
group_obj = Group()
group_obj.switch_collection('group2')
group_obj.save()
太棒了,正在寻找这个。 – noPE 2015-09-21 11:29:55
在这里感知很多upvotes .....正在寻找这个! – NoobEditor 2015-09-22 12:06:40
你可以尝试指定分贝你正在查询该记录? GroupT.objects.using(dbname).filter(name =“hello Group 2000 collection!”) – 2014-11-02 10:55:32
@SyedMauzeRehan与其他集合相同。 – 2014-11-02 10:57:21