2012-07-21 4 views
0

Il semble que quelque chose d'important me manque. J'ai des enregistrements insérés dans mongoDB qui contient des champs avec des caractères nationaux. Il n'y a aucun problème pour l'insérer dans DB ou les trouver et toutes les valeurs semblent plutôt bonnes. Mais si j'essaie de trouver un particulier avec "find()" ou "regex()", ils ne renvoient rien. Par exemple:MongoDB ne peut pas trouver par regex national ou une requête

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 

dans le journal

query={ "position" : { "$regex" : ".*������.*"}} 
--or--- 
query={ "position" : "������"} 

valeur du champ pour "position" est égal "forsøg" ofc. Pattern.matches (". * Forsøg. *", "Forsøg") renvoie true. Si je remplace le modèle par un seul contenant des caractères ASCII (par exemple abc) toutes les méthodes fonctionnent comme prévu. Collection.findAll() renvoie toutes les instances enregistrées avec des valeurs lisibles et correctes.

Versions: MongoDB 2.0.6 64bit, mongo-java-pilote 2.8.0, Java 7. J'ai essayé la même chose avec spring-data-mongodb 1.0.2.RELEASE mais l'enlevé.

Répondre

0

On dirait que je rencontre un bug étrange lié à un maven + testng. Le même code exécuté à partir de .war et de testsuit fournit un résultat totalement différent dans la base de données.

La différence peut être facilement trouvée si votre navigateur pour consulter

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

et regarder les valeurs après chaque exécution.

+0

Les résultats sauvegardés sont-ils différents de manière explicable? Par exemple, codé UTF8 par opposition à non? Il existe peut-être un paramètre d'environnement qui diffère dans la suite de tests par rapport au fichier .war déployé. – Stennie

+0

Eh bien, il se trouve qu'il y a une différence entre les appels faits à partir de «mvn test» et «mvn jetty: run». Je suppose que le plugin surefire ignore les paramètres utf-8. – Observer

Questions connexes