在MongoEngin中过滤嵌入列表

2024-04-19 19:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有这些型号:

class Sub(EmbeddedDocument):
    name = StringField()

class Main(Document):
    subs = ListField(EmbeddedDocumentField(Sub))

我想要一个查询,返回主节点,子节点按名称过滤

^{pr2}$

这将返回正确的干线,但sub始终是整个列表,而不是子集。我怎么才能只得到子集?我需要依赖列表理解吗?在


Tags: name名称列表节点maindocument子集class
1条回答
网友
1楼 · 发布于 2024-04-19 19:27:49

MongoDB不支持您所请求的操作,因此Mongoengine也不支持。在

可以对阵列(列表)执行切片操作,但不能执行特殊筛选。MongoDB数组中的切片工作方式与Python中的切片列表类似,您可以使用slice__关键字语法对Mongoengine执行此操作:

Main.objects.filter(subs__name__exists=True).fields(slice__subs=[0,2])

这将返回从索引0开始的subs(即第一个元素),然后返回两个元素。在

相关问题 更多 >