2014-04-29 5 views
0

1. Je sais comment requête avec l'expression JavaScript Mongo shell (nom de la collection est le nom resource_phys sur le terrain. Est val qui définit comme chaîne type et ne contient que valeur numérique):Comment faire requête MongoDB avec l'expression JavaScript dans le code Java, comme Shell à Mongo

//in Mongo shell: 
var query1 = ("Number(this.val)>-1 && Number(this.val)<3") 
db.resource_phys.find(query1) 
//result found 

2. maintenant, je veux faire la même chose dans le code Java mais ne peut pas trouver une API pour soutenir JavaScript. Je sollicite votre aide pour donner quelques conseils.

3.P.s. Si le champ val est de type numérique, je suis au courant de l'utilisation de l'opérateur $gt et $lt:

//in Java codes: 
DBCollection coll = db.getCollection("resource_phys"); 
DBObject query2 = new BasicDBObject("val",new BasicDBObject("$gt",-1).append("lt",3)); 
DBCursor cursor = coll.find(query2); 
//result got in cursor 

Répondre

1

La forme de requête que vous faites dans la coquille est en fait une forme de raccourci de l'opérateur . Donc, vous traduirais comme ceci:

DBObject query = new BasicDBObject(
      "$where", 
      "Number(this.val)>-1 && Number(this.val)<3" 
    ); 

S'il vous plaît noter la documentation que, comme l'exécution de JavaScript est pas une bonne idée de la performance. Vous devriez vraiment convertir vos chaînes en valeurs numériques réelles.

+0

Incroyable! Génial! Fabuleux! Merci! --- J'ai essayé d'utiliser $ where mais pas travaillé, mais maintenant votre code fonctionne bien. Aussi étrange! Et je connaissais le problème de performance, mais laissez-le maintenant ... Merci encore! – user3583514

Questions connexes