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é.
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
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