【问题标题】:Lookup aggregation in mongoDB using groovy in Jmeter使用 Jmeter 中的 groovy 在 mongoDB 中查找聚合
【发布时间】:2018-12-11 11:39:20
【问题描述】:

我在 MongoDB 中有两个集合。我在 Jmeter 中使用 JSR223 采样器对 mongoDB 执行查找操作。
数据库名称: DB
集合名称: c_1, c_2

在 MongoDB 中执行查找聚合的 Groovy 代码。

c_1.insert(new BasicDBObject(["id" : 1, "name" : "abc", "lastName" : "kumar",  "companyId": 10]))  

c_2.insert(new BasicDBObject(["id" : 10, "companyName" : "Microsoft", "numEmployee" : 100 ]))  

// build the $lookup operations  
DBObject lookupFields = new BasicDBObject("from", "c_2");  
lookupFields.put("localField", "companyId");  
lookupFields.put("foreignField", "id");  
lookupFields.put("as", "companydoc");   
DBObject lookup = new BasicDBObject("$lookup", lookupFields);  

// build the $project operations  
DBObject projectFields = new BasicDBObject("name", 1);  
projectFields.put("lastName", 1);  
projectFields.put("companyId", 1);  
projectFields.put("companyName", "$c_2.companyName");         
DBObject project = new BasicDBObject("$project", projectFields);  
List<DBObject> pipeline = Arrays.asList(lookup, project);  
AggregationOutput output = c_1.aggregate(pipeline);  
for (DBObject result : output.results())    
{  
    System.out.println(result);  
}   

错误:响应消息:javax.script.ScriptException:groovy.lang.MissingPropertyException:没有这样的属性:查找类:Script79

【问题讨论】:

    标签: mongodb groovy jmeter


    【解决方案1】:

    根据documentation,您的语法与Groovy GStrings 不兼容:

    如果您需要转义 GString 中的 $ 或 ${} 占位符,以便它们按原样显示而无需插值,您只需使用 \ 反斜杠字符来转义美元符号:

    assert '${name}' == "\${name}"
    

    所以要么使用单引号,例如:

    DBObject lookup = new BasicDBObject('$lookup', lookupFields);  
    

    或用反斜杠转义美元符号:

    DBObject lookup = new BasicDBObject("\$lookup", lookupFields);  
    

    $project$c_2.companyName 等采用相同的方法。

    更多信息:How to Load Test MongoDB with JMeter

    【讨论】:

    • 谢谢。但是 List pipeline = Arrays.asList(lookup, project);聚合输出输出 = c_1.aggregate(pipeline);它抛出 error-java.lang.IllegalArgumentException: wrong number of arguments。
    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2022-01-03
    • 2020-04-14
    • 2022-06-16
    • 1970-01-01
    • 2019-01-17
    相关资源
    最近更新 更多