我在将下一行从 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/