1.导入gmongo和mongo-java-driver到jmeter的lib目录下
链接:https://pan.baidu.com/s/1Vst6fHEezgrONSj5ms549Q
提取码:gg7r
2.新增JSR223取样器,确认脚本语言为groovy
- find方式查询
import com.mongodb.*
import com.gmongo.*
MongoCredential credentials = MongoCredential.createCredential("[数据库userName]","[数据库Auth DB]", "[数据库password]" as char[])
GMongoClient client = new GMongoClient(new ServerAddress("[数据库ip]",[数据库port]), [credentials])
def DB = client.getDB("[库名]")
//查询条件
BasicDBObject query = new BasicDBObject("bookName","小马过河")
def cursor = DB.getCollection("[表名]").find(query)
def result = ""
try{
while(cursor.hasNext()){
def doc = cursor.next()
result=result + doc.toString()
}
}finally {
cursor.close()
}
SampleResult.setDataEncoding("UTF-8")
SampleResult.setResponseData(result)
- aggregate聚合方式查询
原查询语句
db.getCollection('[表名]').aggregate({"$match": { "dis: { "$in": ["STU", "STU_AND_PAR"] }, "shelfStatus": { "$in": ["ON"] }, "deleted": false }},{ "$group": { "_id": "$subjectId", "subjectId": { "$first": "$subjectId" }, "subjectName": { "$first": "$subjectName" } } },{ "$project": { "subjectId": 1, "subjectName": 1 } })
groovy脚本如下
import com.mongodb.*
import com.gmongo.*
MongoCredential credentials = MongoCredential.createCredential("[数据库userName]","[数据库Auth DB]", "[数据库password]" as char[])
GMongoClient client = new GMongoClient(new ServerAddress("[数据库ip]",[数据库port]), [credentials])
def DB = client.getDB("[库名]")
def collection = DB.getCollection("[表名]")
BasicDBObject in_1 = new BasicDBObject('$in',["STU", "STU_AND_PAR"])
BasicDBObject in_2 = new BasicDBObject('$in',["ON"])
BasicDBObject match = new BasicDBObject().append('dis',in_1).append("deleted",false).append('shelfStatus',in_2)
BasicDBObject object1 = new BasicDBObject('$match',match)
BasicDBObject project = new BasicDBObject().append('subjectId',1).append("subjectName",1)
BasicDBObject object2 = new BasicDBObject('$project',project)
BasicDBObject subjectId = new BasicDBObject('$first','$subjectId')
BasicDBObject subjectName = new BasicDBObject('$first','$subjectName')
BasicDBObject group = new BasicDBObject().append('_id','$subjectId').append("subjectId",subjectId).append('subjectName',subjectName)
BasicDBObject object3 = new BasicDBObject('$group',group)
def output = collection.aggregate(object1,object2,object3)
SampleResult.setDataEncoding("UTF-8")
SampleResult.setResponseData(output.results().toString())
最后返回结果是这样的格式
image.png