MongoEngine:在多个MapField中搜索

问题描述

如果一个嵌入式文档可以存在于一个或另一个地图字段中,那么如何才能很好地对其进行检索?

给出以下方案:

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()

我需要在两个地图字段(ab)中进行搜索,以确定嵌入式文档的存储位置:

_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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...