使用MongoEngine for Django,如何根据列表大小和大于值来过滤查询集?

2024-09-29 23:24:05 发布

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

我使用的是django1.6.8和mongoengine0.8.2。在

我有两个类,ServiceDocument和OptionDocument。ServiceDocument保存一个OptionDocuments列表。有数百万个服务文档(250万个以上)。在

我要选择具有两个以上optiondocument的每个ServiceDocument。在

我“希望”这能起作用,但结果是0:

ServiceDocument.objects.filter(options__size__gt=2).count()

这就是我的工作:

^{pr2}$

最后,如果我有较少的ServiceDocuments和/或我可以让迭代器工作,我可以自己循环它们,但是在内存填满几秒钟后,我会得到segfaults(我猜任何对.all()的操作都会尝试将它们全部收集到内存中)。在

对于迭代器,我尝试了以下操作,但没有成功:

iter(ServiceDocument.objects.all())

Tags: 内存文档gt列表sizeobjectscountall
1条回答
网友
1楼 · 发布于 2024-09-29 23:24:05

嗯,我认为你需要找到一个解决这个问题的方法,因为mongoengine不支持你的查询。你可以做的是添加另一个字段,比如“选项长度”并将选项长度字段存储在此字段中。然后您可以使用'\uugt>;2'进行查询。额外的代价是您需要重写模型保存函数,以便在每次保存时更新长度。您还需要为此更新现有记录。在

你也可以读这个 question

相关问题 更多 >

    热门问题