当前位置: 首页 > 知识库问答 >
问题:

如何在MongoDB中使用Jmeter查询文档

长孙雅志
2023-03-14

我一直在使用jmeter对mongodb进行加载测试,接下来我将使用一个具有这些数据的不同的db

我已经在这里保存了已保存的mongoHost,mongoPort,databaseName,collectionName

jmeter变量

import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.MongoClientSettings;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import static com.mongodb.client.model.Filters.*;
import org.bson.Document;

import java.util.Arrays;
try{


MongoClientSettings settings = MongoClientSettings.builder()
.applyToClusterSettings {builder -> 
builder.hosts(Arrays.asList(new ServerAddress(vars.get("mongoHost"),vars.get("mongoPort").toInteger())))}
.build();

MongoClient mongoClient = MongoClients.create(settings);
MongoDatabase database = mongoClient.getDatabase(vars.get("databaseName"));
MongoCollection<Document> collection = database.getCollection(vars.get("collectionName"));

vars.putObject("collection", collection);   
return "Connected to " + vars.get("collectionName");
}
catch (Exception e) {
    SampleResult.setSuccessful(false);
    SampleResult.setResponseCode("500");
    SampleResult.setResponseMessage("Exception: " + e);
}

这个连接测试通过了,但我无法从数据库中获取、读取任何数据并通过测试,这是代码

import com.mongodb.client.MongoCollection;
import static com.mongodb.client.model.Filters.*;

import org.bson.Document;
import org.bson.types.ObjectId;

try {
    MongoCollection<Document> collection = vars.getObject("collection");
    
    Document result = collection.find(eq("city","CUSHMAN")).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);
}

错误

Response code:500
Response message:Exception: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=localhost:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Exception receiving message}, caused by {java.io.IOException: An existing connection was forcibly closed by the remote host}}]

谢谢你

共有1个答案

令狐灿
2023-03-14

我没有看到“连接测试通过”的证据,如果您查看异常详细信息:

  • 状态=connecting
  • Exception={com.mongodb.mongosocketreadexception:Exception receiving message},
  • 由{java.io.ioException:远程主机强制关闭了现有连接}}]
  • 引起

因此,我宁愿检查您是否可以使用其他MongoDB客户端(如Mongo Shell)运行此查询,因为这似乎是一个常见的网络问题,或者您的MongoDB实例只是还没有启动。

为了获得更多信息,您可以为Mongo Java客户端驱动程序增加JMeter日志的冗长,可以通过在log4j2.xml文件中添加下一行来实现:

<Logger name="com.mongodb.client" level="debug" />
 类似资料:
  • 本文向大家介绍如何使用LIMIT查询MongoDB?,包括了如何使用LIMIT查询MongoDB?的使用技巧和注意事项,需要的朋友参考一下 使用limit()方法查询MongoDB。让我们创建一个包含文档的集合 在find方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是在MongoDB中使用LIMIT的查询- 这将产生以下输出-

  • 问题内容: 我正在尝试在mongodb中执行查询日期,但结果始终为空。我的查询如下: //变量resultaMongo返回空。 Obs:我也尝试不使用.isoformat(),当我直接放入mongodb时,只有添加ISODate才返回结果。因此不会返回结果: 更重要的是,如果您编辑返回: 这是数据库中的记录序列: 如果我打印python的json变量,则会看到类似以下内容的内容: 我的Mongnd

  • 我试图使用.NET驱动程序查询mongodb文档,我想在不创建类对象的情况下获取特定文档中的所有字段,因为这些文档是动态生成的,我只知道一个字段名,即,_id。如何获取整个文档 当字段已知时,这工作正常

  • mongoDb中的文档如下所示: 在我的api请求中,我有一个类似于上面的“建议”元素的结构。我想创建一个查询条件,其中“is”子句应该是api请求中“建议”元素的值。 我使用spring data mongo DB尝试了以下代码:

  • 问题内容: 我想用SQLlike查询来查询一些东西: 我如何在MongoDB中实现相同目标?我like在文档中找不到运算符。 问题答案: 那必须是: 或类似: 您正在寻找某种在某处包含“ m”的东西(SQL的运算符等效于Regexp的),而不是在字符串的开头固定了“ m”的东西。 注意: mongodb使用的正则表达式比sql中的“ LIKE”更强大。使用正则表达式,您可以创建您想像的任何模式。

  • 问题内容: 我想用SQL查询来查询一些东西: 如何在MongoDB中实现相同目标?我在文档中找不到运算符。 问题答案: 那必须是: 或类似: 您正在寻找某种在某处包含“ m”的东西(SQL的’ ‘运算符等效于Regexp的’ ‘),而不是在字符串的开头锚定了“ m”的事物。 注意: mongodb使用的正则表达式比sql中的“ LIKE”更强大。使用正则表达式,您可以创建您想像的任何模式。 有关正