0

重要なことが恋しいようです。国別文字を含むフィールドを含むいくつかのレコードを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で同じことを試しましたが、削除しました。

4

1 に答える 1

0

Maven+testngに関連する奇妙なバグに遭遇したようです。.warとtestsuitから実行された同じコードは、データベースでまったく異なる結果を提供します。

ブラウザでポイントすると、違いが簡単にわかります。

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

各実行後の値を確認します。

于 2012-07-22T08:35:55.983 に答える