如果我有这些模型:
class Sub(EmbeddedDocument):
name = StringField()
class Main(Document):
subs = ListField(EmbeddedDocumentField(Sub))
我想要一个返回主电源的查询,其中按现有名称过滤潜艇
Main.objects.filter(subs__name__exists=True)
这将返回正确的主电源,但子电源始终是整个列表,而不是子集。我怎样才能只得到子集?我需要依赖列表理解吗?
MongoDB 并不完全支持您请求的此操作,因此 Mongoengine 也不支持。
您可以对数组(列表)执行切片操作,但不能执行即席过滤。 MongoDB 数组中的切片与 Python 中的列表切片类似,您可以使用 Mongoengine 使用slice__
关键字语法:
Main.objects.filter(subs__name__exists=True).fields(slice__subs=[0,2])
这将返回从索引 0(即第一个元素)开始的 subs,并返回之后的两个元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)