在JMeter中执行Mongodb聚合
我试图使用mongo java驱动程序3.8在JMeter中运行一个简单的聚合。我不熟悉JMeter,不熟悉将Mongo与Java结合使用。我使用本教程作为起点: 我修改了查询文档部分中用于JSR223采样器的代码,如下所示:在JMeter中执行Mongodb聚合,mongodb,groovy,jmeter,aggregate,mongodb-java,Mongodb,Groovy,Jmeter,Aggregate,Mongodb Java,我试图使用mongo java驱动程序3.8在JMeter中运行一个简单的聚合。我不熟悉JMeter,不熟悉将Mongo与Java结合使用。我使用本教程作为起点: 我修改了查询文档部分中用于JSR223采样器的代码,如下所示: import org.bson.Document; import org.bson.types.ObjectId; import com.mongodb.client.model.Aggregates; try { MongoCollection<Do
import org.bson.Document;
import org.bson.types.ObjectId;
import com.mongodb.client.model.Aggregates;
try {
MongoCollection<Document> collection = vars.getObject("collection");
Document result = collection.aggregate(Arrays.asList(Aggregates.sample(1)));
vars.put("exampleDocumentId", result.get("_id").toString());
return "Document with id=" + result.get("_id") + " found";
}
catch (Exception e) {
SampleResult.setSuccessful(false);
SampleResult.setResponseCode("500");
SampleResult.setResponseMessage("Exception: " + e);
}
请注意错误中的以下部分:无法投射对象 该方法返回。
将
文档
更改为可聚合
将解决此问题。请注意错误部分,其中指出:无法投射对象
该方法返回。
将文档
更改为可聚合
将解决此问题
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Aggregates;
import com.mongodb.client.model.Accumulators;
import com.mongodb.client.model.Projections;
import com.mongodb.client.model.Filters;
import org.bson.Document;
try {
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");
Document result = collection.aggregate(Arrays.asList(Aggregates.sample(1))).first()
vars.put("exampleDocumentId", result.get("_id").toString());
return "Document with id=" + result.get("_id") + " found";
}
catch (Exception e) {
SampleResult.setSuccessful(false);
SampleResult.setResponseCode("500");
SampleResult.setResponseMessage("Exception: " + e);
}
导入com.mongodb.client.MongoClients;
导入com.mongodb.client.MongoClient;
导入com.mongodb.client.MongoCollection;
导入com.mongodb.client.MongoDatabase;
导入com.mongodb.client.model.Aggregates;
导入com.mongodb.client.model.累加器;
导入com.mongodb.client.model.Projections;
导入com.mongodb.client.model.Filters;
导入org.bson.Document;
试一试{
MongoClient MongoClient=MongoClients.create();
MongoDatabase=mongoClient.getDatabase(“测试”);
MongoCollection collection=database.getCollection(“餐厅”);
文档结果=collection.aggregate(Arrays.asList(Aggregates.sample(1))).first()
vars.put(“exampleDocumentId”,result.get(“_id”).toString();
返回“documentwithid=“+result.get”(“\u id”)+“found”;
}
捕获(例外e){
SampleResult.setSuccessful(假);
采样器结果设置响应代码(“500”);
SampleResult.setResponseMessage(“异常:+e”);
}
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Aggregates;
import com.mongodb.client.model.Accumulators;
import com.mongodb.client.model.Projections;
import com.mongodb.client.model.Filters;
import org.bson.Document;
try {
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");
Document result = collection.aggregate(Arrays.asList(Aggregates.sample(1))).first()
vars.put("exampleDocumentId", result.get("_id").toString());
return "Document with id=" + result.get("_id") + " found";
}
catch (Exception e) {
SampleResult.setSuccessful(false);
SampleResult.setResponseCode("500");
SampleResult.setResponseMessage("Exception: " + e);
}
导入com.mongodb.client.MongoClients;
导入com.mongodb.client.MongoClient;
导入com.mongodb.client.MongoCollection;
导入com.mongodb.client.MongoDatabase;
导入com.mongodb.client.model.Aggregates;
导入com.mongodb.client.model.累加器;
导入com.mongodb.client.model.Projections;
导入com.mongodb.client.model.Filters;
导入org.bson.Document;
试一试{
MongoClient MongoClient=MongoClients.create();
MongoDatabase=mongoClient.getDatabase(“测试”);
MongoCollection collection=database.getCollection(“餐厅”);
文档结果=collection.aggregate(Arrays.asList(Aggregates.sample(1))).first()
vars.put(“exampleDocumentId”,result.get(“_id”).toString();
返回“documentwithid=“+result.get”(“\u id”)+“found”;
}
捕获(例外e){
SampleResult.setSuccessful(假);
采样器结果设置响应代码(“500”);
SampleResult.setResponseMessage(“异常:+e”);
}
Collection.aggregate()函数调用返回的值不能直接转换到文档,您可以使用它从Iterable实例返回第一个值,如:
Document result = collection.aggregate(Arrays.asList(Aggregates.sample(1))).head()
有关JMeter中Groovy脚本的详细信息:Collection.aggregate()函数调用返回的值不能直接转换到文档,您可以使用它从Iterable实例返回第一个值,如:
Document result = collection.aggregate(Arrays.asList(Aggregates.sample(1))).head()
关于JMeter中Groovy脚本的更多信息:I替换为:Document result=collection.aggregate(Arrays.asList(Aggregates.sample(1));其中:AggregateIterable结果=collection.aggregate(Arrays.asList(Aggregates.sample(1));现在我得到了错误:响应消息:javax.script.ScriptException:org.codehaus.groovy.control.multiplecompilentErrorsException:startup failed:Script38.groovy:10:无法解析第10行第30列的类AggregateIterable。AggregateTable结果=collection.aggregate(Arrays.asList(Aggregates.sample(1))^您正在添加导入吗<代码>导入com.mongodb.client.aggregateItable代码>我现在有:import com.mongodb.client.AggregateIterable;并导入com.mongodb.client.model.Aggregates;新的错误是:响应消息:异常:groovy.lang.MissingMethodException:没有方法签名:com.mongodb.client.internal.AggregateTableImpl.get()适用于参数类型:(java.lang.String)值:[u id]可能的解决方案:getAt(java.lang.String)、grep()、grep(java.lang.Object)、getAt(int)、wait()、any()请阅读文档!我替换了:documentresult=collection.aggregate(Arrays.asList(Aggregates.sample(1));其中:AggregateIterable结果=collection.aggregate(Arrays.asList(Aggregates.sample(1));现在我得到了错误:响应消息:javax.script.ScriptException:org.codehaus.groovy.control.multiplecompilentErrorsException:startup failed:Script38.groovy:10:无法解析第10行第30列的类AggregateIterable。AggregateTable结果=collection.aggregate(Arrays.asList(Aggregates.sample(1))^您正在添加导入吗<代码>导入com.mongodb.client.aggregateItable代码>我现在有:import com.mongodb.client.AggregateIterable;并导入com.mongodb.client.model.Aggregates;新的错误是:响应消息:Exception:groovy.lang.MissingMethodException:没有方法的签名:com.mongodb.client.internal.AggregateIter