mongoengine如何过滤字段不为空?
How do mongoengine filter field not null?
我想过滤具有 category
值的数据,但我不知道如何在 mongoengine
中执行此操作。
我试试:
data = Data.objects.exclude(category="").order_by('-datetime')[:500]
但出现错误:
exclude() got an unexpected keyword argument 'category'
我在文档中没有找到方法,你是怎么做到的?
.exclude()
method takes only positional arguments; fields name. That being you need to use a query operator 使用 category__ne=''
过滤掉类别为空字符串的文档
data = Data.objects(category__ne='').order_by('-datetime')[:500]
我觉得您混淆了两个概念:过滤文档和 returning 文档子集。
返回文档子集
exclude
告诉 mongo 到 return 没有类别字段的选定文档。它不会过滤文档,只是 return 相同的文档,但没有类别字段:文档子集。剥离不需要的内容可以提高性能。 exclude
和 only
实现相同的目标,除了 exclude
黑名单字段,而 only
白名单字段。
过滤文档
您想要的是使用查询集过滤文档:
data = Data.objects({'category':{'$ne':''}}).order_by('-datetime')[:500]
data = Data.objects(category__ne='').order_by('-datetime')[:500]
我想过滤具有 category
值的数据,但我不知道如何在 mongoengine
中执行此操作。
我试试:
data = Data.objects.exclude(category="").order_by('-datetime')[:500]
但出现错误:
exclude() got an unexpected keyword argument 'category'
我在文档中没有找到方法,你是怎么做到的?
.exclude()
method takes only positional arguments; fields name. That being you need to use a query operator 使用 category__ne=''
data = Data.objects(category__ne='').order_by('-datetime')[:500]
我觉得您混淆了两个概念:过滤文档和 returning 文档子集。
返回文档子集
exclude
告诉 mongo 到 return 没有类别字段的选定文档。它不会过滤文档,只是 return 相同的文档,但没有类别字段:文档子集。剥离不需要的内容可以提高性能。 exclude
和 only
实现相同的目标,除了 exclude
黑名单字段,而 only
白名单字段。
过滤文档
您想要的是使用查询集过滤文档:
data = Data.objects({'category':{'$ne':''}}).order_by('-datetime')[:500]
data = Data.objects(category__ne='').order_by('-datetime')[:500]