我正在尝试使用正则表达式在mongodb中执行$ ne查询,但它似乎不起作用。当我不使用正则表达式时,$ ne(不等于)运算符正常工作。
BasicDBObject q = new BasicDBObject()
q.put(field, ["\$ne": value])
以上工作正常,结果集不包含具有该字段值的任何文档。
但我需要它不区分大小写。所以我这样做了
q.put(field, ["\$ne": Pattern.compile(value, Pattern.CASE_INSENSITIVE)])
但这不起作用..
所以我想,让我转到命令行,看看我是否可以手动完成。所以我这样做了:
db.Order.find({"bill.recipient.name": {$ne: /diep/i}},{"bill.recipient.name":1})
它仍然不起作用!
任何想法?
答案 0 :(得分:9)
尝试使用 $ not 而不是 $ ne 。
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-Metaoperator%3A%24not
答案 1 :(得分:2)
您也可以通过这种方式构建查询
BasicDBObject query = new BasicDBObject();
query.append(fieldname,new BasicDBObject("$ne", value));