问题描述
如果一个嵌入式文档可以存在于一个或另一个地图字段中,那么如何才能很好地对其进行检索?
给出以下方案:
class Attr(db.EmbeddedDocument):
id = db.StringField()
name = db.StringField()
class Test(db.Document):
a = db.MapField(db.EmbeddedDocumentField(Attr))
b = db.MapField(db.EmbeddedDocumentField(Attr))
创建了这样的实例后:
_a = Attr(id='0',name='a')
_b = Attr(id='1',name='b')
t = test()
t.a[_a.id] = _a
t.b[_b.id] = _b
t.save()
我需要在两个地图字段(a
和b
)中进行搜索,以确定嵌入式文档的存储位置:
_t = Test.objects().filter( Q( a__exists='1' ) or Q( b__exists='1' ) ).first()
try:
name = _t.a['1'].name
except KeyError:
name = _t.b['1'].name
print(name)
是否有与sql WHEN
等效的名称?另外:我只想检索名称,而不是整个对象。但是由于我不知道它的存储位置,所以无法使用.only()
直接访问它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)