0

看来我错过了一些重要的事情。我有一些记录插入到 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" : "������"}

“位置”的字段值等于“forsøg” ofc。Pattern.matches(".*forsøg.*", "forsøg") 返回真。如果我将模式替换为仅包含 ASCII 字符的模式(例如“ .abc. ”),所有方法都会按预期工作。Collection.findAll() 返回所有保存的具有可读和正确值的实例。

版本:MongoDB 2.0.6 64 位、mongo-java-driver 2.8.0、Java 7。我尝试了同样的 spring-data-mongodb 1.0.2.RELEASE 但删除了它。

4

1 回答 1

0

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

如果将浏览器指向

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

并查看每次执行后的值。

于 2012-07-22T08:35:55.983 回答