【问题标题】:Mongoengine... query something not in a ListField?Mongoengine ... 查询不在 ListField 中的内容?
【发布时间】:2012-03-05 10:37:38
【问题描述】:

例如..

class Page(Document)
    tags = ListField(StringField())

在这种情况下,我们可以像这样在标签列表中找出一个值。

Page.objects(tags='coding')

如果标签类似于['coding', 'x', 'y'],那么文档将被匹配...

但我的问题是如何找出不在列表字段中的值。

我的错误代码是..

Page.objects(tags!='coding') 

Page.objects(tags__not = 'coding')

Page.objects(tags__not__in = 'coding')

但是..他们不只是工作..

如何查询在 ListField 中没有给定值的文档?

【问题讨论】:

    标签: python django mongodb mongoengine


    【解决方案1】:

    要查找任何没有标签编码的页面,请使用$nin 运算符:

    Page.objects(tags__nin=['coding'])
    

    【讨论】:

      【解决方案2】:

      我会跳过在这个上使用内置的 mongo 语法,而只使用原始查询:

      Page.objects(__raw__={"tags" : {"$ne" : ['coding']}})
      

      随着查询变得越来越复杂,你会希望你像这样设置它。

      【讨论】:

        猜你喜欢
        • 2019-04-22
        • 1970-01-01
        • 1970-01-01
        • 2014-10-04
        • 2013-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多