重要なことが恋しいようです。国別文字を含むフィールドを含むいくつかのレコードをmongoDBに挿入しています。それをDBに挿入したり、見つけたりするのに問題はなく、すべての値はかなり良好に見えます。しかし、「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" : "������"}
「position」のフィールド値は「forsøg」ofcと同じです。Pattern.matches( "。*forsøg。*"、 "forsøg")はtrueを返します。パターンをASCII文字のみを含むパターン(「.abc。」など)に置き換えると、すべてのメソッドが期待どおりに機能します。Collection.findAll()は、読み取り可能で正しい値を持つすべての保存済みインスタンスを返します。
バージョン:MongoDB 2.0.6 64ビット、mongo-java-driver 2.8.0、Java7。spring-data-mongodb1.0.2.RELEASEで同じことを試しましたが、削除しました。