2014-04-29 17 views
0

1. 我知道查询与蒙戈JavaScript表达式如何壳 (集合名称为resource_phys,字段名是val其定义为字符串类型,并且只包含数值):如何做MongoDB的查询与Java代码JavaScript表达式,就像在蒙戈外壳

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

2. 现在,我想做Java代码同样的事情,但不能找到任何API来支持JavaScript。我恳求你的帮助提供一些提示。

3.P.s. 如果字段val是数字式的,我知道使用运营商$gt$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 

回答

1

查询您在外壳中做的形式实际上只是操作的快捷方式。所以你会这样翻译:

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

请注意,虽然运行JavaScript的文件不是性能的好主意。你真的应该将你的字符串转换为实际的数值。

+0

令人惊叹!真棒!很棒!谢谢! ---我没有尝试过使用$但没有工作,但现在你的代码工作fine.so奇怪!我确实知道性能问题,但现在就放弃它......再次感谢! – user3583514