mongoengine如何过滤字段不为空?

use*_*364 5 python mongodb mongoengine mongodb-query

我想用category值过滤数据,但我不知道如何做到这一点mongoengine.

我尝试:

data = Data.objects.exclude(category="").order_by('-datetime')[:500]  
Run Code Online (Sandbox Code Playgroud)

但得到错误:

exclude() got an unexpected keyword argument 'category'
Run Code Online (Sandbox Code Playgroud)

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

Jér*_*ôme 4

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

\n

返回文档子集\xc2\xa0

\n

exclude告诉 mongo 返回不带类别字段的选定文档。它不会过滤文档,只是返回相同的文档,但没有类别字段:文档子集。去掉不需要的东西可以提高性能。excludeonly达到相同的目标,除了exclude黑名单字段,而only白名单字段。

\n

过滤文档

\n

您想要的是使用查询集过滤文档:

\n
data = Data.objects({\'category\':{\'$ne\':\'\'}}).order_by(\'-datetime\')[:500]\n
Run Code Online (Sandbox Code Playgroud)\n

或使用双下划线语法

\n
data = Data.objects(category__ne=\'\').order_by(\'-datetime\')[:500]\n
Run Code Online (Sandbox Code Playgroud)\n

请参阅教程

\n