python - 过滤 mongoengine 查询

标签 python mongodb mongoengine

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

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

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

存储在数据库中的当前响应(全部具有同一用户):

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

现在我想知道用户回答了问题多少次:

@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()

所以我认为这不可能是问题

最佳答案

我可以使用raw_queries与这样的嵌套字段一起使用:

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

关于python - 过滤 mongoengine 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56937506/

相关文章:

python - 为什么我的缓冲区溢出漏洞只会打开用户 shell 而不是 root shell?

python selenium 从下拉菜单中选择

python - 在Python中快速计算频率

MongoDB 查询组和不同的一起

python - 使用 mongoengine 查询 ListField 时遇到问题

python - Mongoengine - 命令查找需要身份验证

python - 我可以在 python 中计算 exp(1+2j) 吗?

mongodb - 如何使用 mgo 和 Go 查询 MongoDB 的日期范围?

javascript - 如何在 Mongoose 中排序?

python - mongoengine 默认超时配置