我有以下型号
class Skill(EmbeddedDocument):
name = StringField(required = True)
level = IntField(required = True)
class Agent(Document):
name = StringField(required = True)
email = EmailField(required = True, unique = True)
skills = ListField(EmbeddedDocumentField(Skill))
我想搜索具有以下技能的特工(名称 =“计算机技能且级别 >5)
我写了以下查询:
Agent.objects.filter(name='ashraf', skills__level__gt=5,skills__name="Computer Skills")
如果代理具有名为“计算机技能”且级别 = 3 的技能,并且还具有名为“英语技能”且级别 = 10 的技能,则该代理将出现在查询结果中
你需要做一个$elemMatch
[1] 查询,目前 mongoengine 中没有内置支持。你必须做一个raw像这样查询:
Agent.objects.filter(
name='ashraf',
__raw__={"skills": {
"$elemMatch": {
"level": {"$gt": 5},
"name": "Computer Skills"
}
}}
)
[1] http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24elemMatch http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24elemMatch
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)