我在性能测试中使用jMeter,需要更改mongodb文档中的一些数据。我遇到了一个问题,在使用updateOne命令时,将工作mongosh查询转换为java,jmeter/java中的行为不同。
我需要修改的字段嵌套在object中,object又嵌套在array中,array又嵌套在object中(图1)。
image 1: Data structure as seen in MongoDBCompass
我需要将'number'字段的值更改为我的一个jmeter值的值。在mongodbcompass中,当我使用这样的脚本时,它可以完美地工作:
db.process.updateOne({_id: "01deda7ec9894a3cbdeb"},
{$set: {
"individualPerson.identityDocuments.0.number": "ZZA002204"
}}
)
但是当在jmeter中使用这个java代码时(java/groovy)会覆盖Object中的所有内容,并将individualPerson的数据类型从Array更改为Object(图2)
(collection是变量的名称,它指向进程集合)
collection.updateOne(Filters.eq("_id", 01deda7ec9894a3cbdeb), Updates.set("individualPerson.identityDocuments.0.number", "abc123456")
image 2: Data after changing it with jmeter/java
在使用jmeter时,如何正确更改它?
我试过将java数组传入updateone方法,但它没有更新任何东西。我也试过使用java将mongosh查询发送到mongodb,但它也不起作用
1条答案
按热度按时间icnyk63a1#
您应该先尝试一个过滤器,然后使用更新后的文档进行覆盖,类似这样