mongodb - 删除操作无法使用 Jmeter 中的 groovy 删除 mongo 中的文档
问题描述
我正在尝试使用 deleteone 以及 deletemany 使用以下代码删除我通过脚本创建的文档:
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import static com.mongodb.client.model.Filters.*;
import org.bson.Document;
import org.bson.types.ObjectId;
import java.util.Arrays;
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 org.bson.Document;
try {
String mongoUser = vars.get("mongouser");
String userDB = vars.get("userdb");
char[] password = vars.get("password").toCharArray();
MongoCredential credential = MongoCredential.createCredential(mongoUser, userDB, password);
MongoClientSettings settings = MongoClientSettings.builder()
.applyToClusterSettings {builder ->
builder.hosts(Collections.singletonList(new ServerAddress(vars.get("mongohost"), vars.get("mongoPort") as int)))}
.credential(credential)
.build();
MongoClient mongoClient = MongoClients.create(settings);
MongoDatabase database = mongoClient.getDatabase(vars.get("databaseName"));
MongoCollection<Document> collection = database.getCollection(vars.get("collectionName1"));
vars.putObject("collection1", collection);
collection.deleteone(eq("EmployeeName", "Test Automation through Jmeter"));
return "Document deleted";
}
catch (Exception e) {
SampleResult.setSuccessful(false);
SampleResult.setResponseCode("500");
SampleResult.setResponseMessage("Exception: " + e);}
收到此错误:
Response message: Exception: groovy.lang.MissingMethodException: No signature of method: com.mongodb.client.internal.MongoCollectionImpl.deleteone() is applicable for argument types: (com.mongodb.client.model.Filters$
SimpleEncodingFilter) 值:[Filter{fieldName='EmployeeName', value=Test Automation through Jmeter}] 可能的解决方案:deleteOne(org.bson.conversions.Bson), deleteOne(com.mongodb.client.ClientSession, org.bson.conversions .Bson), deleteOne(org.bson.conversions.Bson, com.mongodb.client.model.DeleteOptions), deleteOne(com.mongodb.client.ClientSession, org.bson.conversions.Bson, com.mongodb.client.model .DeleteOptions), deleteMany(org.bson.conversions.Bson), deleteMany(com.mongodb.client.ClientSession, org.bson.conversions.Bson)
我究竟做错了什么?
解决方案
我相信该方法是被调用的deleteOne
,而不是被调用deleteone
的,所以调用它的正确方法应该是:
collection.deleteOne(eq("EmployeeName", "Test Automation through Jmeter"));
另请参阅 javadocs MongoCollection
:https ://mongodb.github.io/mongo-java-driver/3.6/javadoc/?com/mongodb/client/MongoCollection.html
推荐阅读
- python - OPENERP 6.1 中函数 GROUP_BY 中的字段翻译
- android - 错误快速框登录
- r - 朴素贝叶斯错误:下标越界
- r - R中的圆形或/功能错误?
- powershell - 基于注释的帮助的正确语法 .EXAMPLE
- c# - 异常没有给出它发生的文件或行
- javascript - FullCalendar 行 Javascript
- c# - 我应该使用什么模式来防止耗时过长的异步调用溢出
- java - Android:访问内部 AsyncTask 类的变量,但在片段的 onCreateView 中将其设置为 null
- git - git rebase/checkout 保留最新修改的文件