mongoengine如何过滤字段不为空?

时间:2015-11-24 07:46:30

标签: python mongodb mongodb-query mongoengine

我想过滤category值的数据,但我不知道如何在mongoengine中执行此操作。

我试试:

data = Data.objects.exclude(category="").order_by('-datetime')[:500]  

但得到了错误:

exclude() got an unexpected keyword argument 'category'

我在文档中找不到该方法,你是怎么做到的?

2 个答案:

答案 0 :(得分:2)

我觉得你混淆了两个概念:过滤文档和返回文档子集。

返回文档子集

exclude告诉mongo返回没有类别字段的所选文档。它不会过滤文档,只返回相同的文档,但没有类别字段:文档子集。剥离不需要的东西可以提高性能。 excludeonly实现了相同的目标,exclude黑名单字段除外,only白名单字段。

过滤文件

您想要的是使用Queryset过滤文档:

data = Data.objects({'category':{'$ne':''}}).order_by('-datetime')[:500]

或使用double underscore syntax

data = Data.objects(category__ne='').order_by('-datetime')[:500]

请参阅the tutorial

答案 1 :(得分:1)

.exclude()方法只接受位置参数;字段名称。那就是你需要使用query operator使用AppBarLayout过滤掉类别为空字符串的文档

Toolbar