【问题标题】:How to do MongoDB query with JavaScript expression in Java code , like in Mongo shell如何在 Java 代码中使用 JavaScript 表达式进行 MongoDB 查询,例如在 Mongo shell 中
【发布时间】:2014-04-29 11:43:25
【问题描述】:

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

【问题讨论】:

    标签: java javascript mongodb


    【解决方案1】:

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

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

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

    【讨论】:

    • 太棒了!太棒了!太棒了!谢谢! ---我确实尝试过使用 $where 但没有用,但现在你的代码工作正常。太奇怪了!我确实知道性能问题,但现在就离开它......再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 2018-09-04
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    相关资源
    最近更新 更多