2014-04-29 15 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