MongoDB - Java:不是运算符和正则表达式

时间:2016-05-11 10:17:01

标签: java spring mongodb

我遇到了将我的java代码中的下一行转换为mongoDB的问题:

{ "field1.array": { $not : /\w*(whatever)\w*/ }}

我试过用这个:

Criteria criteria = new Criteria() {
   @Override
   public DBObject getCriteriaObject() {
      return 
         new BasicDBObject("field1.array",
           new BasicDBObject("$not",
           Pattern.compile(regexp)));
  }
};

哪个不起作用,因为它将正则表达式发送为与$regex运算符不兼容的$not函数。

我试图用这个来否定我的正则表达式:^((?!my string).)*$ 如果我没有指定数组位置,它对我的​​数组都不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我想,你只是缺少"等于"对于模式。从未尝试使用DBObject,但使用过滤器它的工作原理如下:

 collection.find(
    Filters.not(Filters.eq("myField", Pattern.compile("xyz.*")))
 )