我在过滤查询时遇到了一些麻烦,我不知道为什么。我所有其他的过滤器都可以正常工作。
首先,我有一个mongoDB集合,其数据如下所示:
_id: generated
title: stringfield
date: Datefield
Responses: EmbeddedDocument
user: ReferenceField
help: BooleanField
存储在数据库中的当前响应(所有响应都由同一用户使用):
现在,我想知道用户回答问题的次数:
@queryset_manager
def responses_user(doc_cls, queryset):
return queryset.filter(responses__user=current_user.id).count
上面的查询有效,它返回正确数量的响应(4)。现在,我想为其添加一个过滤器,因为我想知道用户用True响应了多少次。因此查询变为:
@queryset_manager
def responses_user(doc_cls, queryset):
return queryset.filter(responses__user=current_user.id, responses__help=True).count
现在我得到一个我不明白的结果。它给了我3。应该是2。对此我不了解两件事:
仅供参考,我拨打电话的方式是:
responses = Questions.responses_user()
所以这不是我想的问题
答案 0 :(得分:0)
我可以使用raw_queries来处理嵌套字段,如下所示:
queryset.filter(
__raw__= {'responses.user': current_user.id, 'responses.help' = True}
).count