如何在Java代码中使用JavaScript表达式进行MongoDB查询,就像在MongoShell中一样

How to do MongoDB query with JavaScript expression in Java code , like in Mongo shell

本文关键字:MongoShell 查询 一样 代码 Java JavaScript 表达式 MongoDB      更新时间:2023-09-26

1。我知道如何在Mongo shell中使用JavaScript表达式查询(集合名称为resource_phys。字段名称为val,定义为String类型,仅包含数值):

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

2。现在,我想在Java代码中做同样的事情,但找不到任何支持JavaScript的API。我请求你帮忙给我一些提示。

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

您在shell中执行的查询形式实际上只是$where运算符的快捷形式。所以你会这样翻译:

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

不过,请注意文档,因为运行JavaScript对性能不是一个好主意。您确实应该将字符串转换为实际的数值。