Java MongoDB可以';无法通过国家正则表达式或查询找到

Java MongoDB可以';无法通过国家正则表达式或查询找到,java,mongodb,search,Java,Mongodb,Search,看来我错过了一些重要的事情。 我在mongoDB中插入了一些记录,其中包含带有国家字符的字段。将其插入数据库或查找它们没有问题,所有值看起来都很好。 但是,如果我试图用“find()”或“regex()”查找特定的一个,它们将不会返回任何结果。例如: DBObject query = new BasicDBObject(); query.put("position", Pattern.compile(".*forsøg.*")); --or-- query.put("position","for

看来我错过了一些重要的事情。 我在mongoDB中插入了一些记录,其中包含带有国家字符的字段。将其插入数据库或查找它们没有问题,所有值看起来都很好。 但是,如果我试图用“find()”或“regex()”查找特定的一个,它们将不会返回任何结果。例如:

DBObject query = new BasicDBObject();
query.put("position", Pattern.compile(".*forsøg.*"));
--or--
query.put("position","forsøg");
System.out.println(collection.find(query).count());  // prints 0
日志

query={ "position" : { "$regex" : ".*������.*"}}
--or---
query={ "position" : "������"}
“位置”的字段值等于ofc的“forsøg”。matches(“.*forsøg.*”、“forsøg”)返回true。 若我将模式替换为只包含ASCII字符(例如“.abc.”)的模式,则所有方法都能按预期工作。findAll()返回所有保存的实例,其值可读且正确


版本:MongoDB 2.0.6 64位,mongo java驱动程序2.8.0,java 7。我在SpringDataMongoDB1.0.2.RELEASE上也尝试了同样的方法,但删除了它

看起来我遇到了一个与maven+testng相关的奇怪bug。从.war和testsuit执行的相同代码在数据库中提供了完全不同的结果

如果将浏览器指向

http://127.0.0.1:28017/baseName/collectionName/ 

并查看每次执行后的值

保存的结果是否以任何可解释的方式不同。。例如,UTF8编码与否?也许测试套件中的环境设置与部署的.war文件中的环境设置不同。事实证明,从“mvn test”和“mvn jetty:run”发出的调用之间存在差异。我猜surefire插件忽略了utf-8设置。