过滤mongoengine查询

时间:2019-07-08 14:50:03

标签: python mongodb mongoengine

我在过滤查询时遇到了一些麻烦,我不知道为什么。我所有其他的过滤器都可以正常工作。

首先,我有一个mongoDB集合,其数据如下所示:

_id: generated
title: stringfield
date: Datefield
Responses: EmbeddedDocument 
    user: ReferenceField
    help: BooleanField

存储在数据库中的当前响应(所有响应都由同一用户使用):

  • 2次,使用Responses.help = False
  • 使用Responses.help = True
  • 2次

现在,我想知道用户回答问题的次数:

@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。对此我不了解两件事:

  1. 为什么会退回3?那真是个奇数
  2. 为什么我的查询不起作用?

仅供参考,我拨打电话的方式是:

responses = Questions.responses_user()

所以这不是我想的问题

1 个答案:

答案 0 :(得分:0)

我可以使用raw_queries来处理嵌套字段,如下所示:

queryset.filter(
  __raw__= {'responses.user': current_user.id, 'responses.help' = True}
).count