3

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

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

如何搜索他们的name字段不匹配的项目/Foo.*/

4

3 回答 3

5

您可以使用$not

db.customers.find( { name : { $not : /acme.*corp/i } } );
于 2012-05-25T09:26:49.077 回答
0

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

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

db['collection'].find({'name': {'$not': re.compile("^__TEST")}})
于 2013-05-28T23:23:20.823 回答
0

或者 mongomapper 中的类似内容也适用于搜索在电子邮件字段中未找到电子邮件域的情况,如果为 false 则批准:

non_org_email_users = org.users.where(
  :email => { '$not' => /@#{org.official_email}/i }, 
  approved: false).all
于 2019-09-19T02:42:55.690 回答