JMeter MongoDB Where子句不使用$ gt $ lt

时间:2017-01-29 17:11:20

标签: mongodb groovy jmeter java-api

当我尝试使用大于或小于mongoDB where子句时,我得到了以下错误:任何想法如何避免这种情况?

document

以下是我的Full Groovy Code到现在为止: 一切都有效,除了GREATER THAN(或lt)查询过滤器:

Response message: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: gt for class: Script117

3 个答案:

答案 0 :(得分:2)

错误消息:groovy.lang.MissingPropertyException,在以下情况下抛出:

  

动态属性调度失败时发生异常   不明财产。

注意 Missing * Exception 类的命名是为了保持一致性,以避免与同名的JDK异常冲突。

尝试插入"年龄"作为键和新的BasicDBObject(" $ gt",30)作为一个值,导致你得到的异常,因为JVM查找属性调用gt不存在。

put方法意味着:在此对象中设置名称/值对。 在代码中,您打算附加搜索条件,而不是将其添加。

与您所拥有的代码相关,我建议将 put 方法的使用替换为追加

这是你的代码:

BasicDBObject whereQuery = new BasicDBObject();
//whereQuery.put("gender", "female");
whereQuery.put("age", new BasicDBObject("$gt", 30));

如果替换:

whereQuery.put("age", new BasicDBObject("$gt", 30));

使用:

whereQuery.append("age", new BasicDBObject("$gt", 30));

您可以使用的另一个建议是 Criteria.where 语法, 这更具可读性。

def query = Query.query(Criteria.where('gender').is('female').and('age')
            .gt(30))
collection.find(query, fields)

另一个小问题,因为您的代码是用Groovy编写的,所以不应该用;

完成每一行

答案 1 :(得分:2)

您是否尝试使用单引号,因此groovy并不认为您正在进行字符串模板化?

 client.newCall(request).enqueue(new Callback() {

            @Override
            public void onFailure(Call call, final IOException e) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // AlertDialog, etc.
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
            if (!response.isSuccessful()) {
                onFailure(call, new IOException("Unexpected code: " + response));
            }

                // else success

            }
        });

答案 2 :(得分:1)

你应该避免:

  • 将JMeter变量称为${var}
  • 使用$var结构

因为它们在Groovy中具有特殊含义,所以:

  1. 将这些${serverIP}替换为vars.get("serverIP")${mongodb}替换为vars.get("mongodb")等。
  2. 将双引号替换为单引号,尤其是在使用$gt函数
  3. 的行中
  4. (可选)行末尾的分号不是必需的
  5. 参考文献: