Dans un projet sur lequel je travaille, à un moment donné, j'ai lu une requête à mongodb à partir d'une chaîne. J'ai utilisé com.mongodb.util.JSON.parse(querystring)
pour lire la requête, qui a fonctionné correctement jusqu'à ce que j'ai commencé à lire des requêtes qui contenaient des opérateurs comme $ max et $ min. À ce stade, plutôt que d'utiliser l'opérateur $ max de mongodb, l'analyseur crée à la place un champ "$ max". Par exemple,Analyser des chaînes dans des documents de requête mongodb avec des opérateurs dans java
la chaîne d'entrée:
{ $query : { state : "AL" } , $max : { pop : 9058 } }
est analysé à la dbobject:
{ "$query" : { "state" : "AL"} , "$max" : { "pop" : 9058}}
Quand je regarde alors un dbcursor avec ce document de requête, je reçois un curseur de taille 0 (aucun document correspondant trouvé dans la base de données), vraisemblablement parce qu'il n'y a pas de documents avec des champs "$ query" ou "$ max".
Y at-il quelque chose que je peux utiliser en plus de JSON.parse()
? Je ne suis pas opposé à écrire ma propre fonction pour cela, mais comment puis-je obtenir un objet DBObject qui reconnaît les opérateurs $ comme des opérateurs et non des champs?
Un conseil serait apprécié!
Cela fonctionne bien, même si je me suis retrouvé avec une solution différente. Merci quand même! – firechant