【问题标题】:Searching for fields that don't match a regex in MongoMapper在 MongoMapper 中搜索与正则表达式不匹配的字段
【发布时间】:2012-05-25 09:16:38
【问题描述】:

在 MongoMapper 中,我可以使用以下查询根据正则表达式匹配搜索项目:

Foo.where(:name => /Foo.*/)

如何搜索其name 字段与/Foo.*/ 不匹配的项目?

【问题讨论】:

    标签: mongodb mongomapper


    【解决方案1】:

    您可以使用$not

    db.customers.find( { name : { $not : /acme.*corp/i } } );
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 python (pymongo),这将不起作用,您会收到一个关于如何使用 BSON 正则表达式的令人困惑的错误。

      但是,它将直接接受 python 正则表达式对象:

      db['collection'].find({'name': {'$not': re.compile("^__TEST")}})
      

      【讨论】:

        【解决方案3】:

        或者 mongomapper 中类似的东西也可以用于搜索在电子邮件字段中找不到电子邮件域的情况,如果为 false 则批准:

        non_org_email_users = org.users.where(
          :email => { '$not' => /@#{org.official_email}/i }, 
          approved: false).all
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-28
          • 2015-01-25
          • 1970-01-01
          • 1970-01-01
          • 2012-01-17
          • 1970-01-01
          • 2013-04-14
          相关资源
          最近更新 更多