java - MongoDB-Java : Not operator and regular expressions

标签 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).)*$ 如果我不指定数组位置,它对我的​​数组不起作用。

有什么想法吗?

最佳答案

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

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

关于java - MongoDB-Java : Not operator and regular expressions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37159611/

相关文章:

linux - linux下运行MongoDB需要调sysctl.conf吗?

java - MongoDB with Java - 大量 id 查询与性能问题

ruby-on-rails - 从 mongoid 中的文档中排除字段?

java - 在 Java 中创建对象(继承和多态)

java - 字节数组到 int java 在 Windows 中工作而不是在 linux 中

java - Spring MVC 验证模型

java - Spring Hateoas - REST 客户端需要有模型类 + 资源类

spring - 无法将参数从Gradle命令行传递到Spring项目(不是Boot)

java - 使用 JFreeChart 的市场深度图表

java - 用于 bitbucket 管道的带有 postgresql 和 java 的 Docker