使用groovy脚本语言查询mongo
- 在系统中导入mongo-java-driver和gmongo的jar包
-
前置脚本选择groovy,下面是聚合查询方式
image.png
原查询语句为
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 } })
metersphere脚本内容如下
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)
log.info("MONGO查询结果>>>"+output.results().toString())
image.png