MeterSphere 如何连接Mongodb数据库

news2024/11/27 16:52:05

MeterSphere 如何连接Mongodb数据库

前言:最近有在使用Metersphere的时候遇到了需要连接Mongodb的需求,而Metersphere只支持以下四种通过数据库驱动连接:mysql、sql server、oracle、pgsql,现在给大家分享一种通过前置脚本连接mongo的方法
在这里插入图片描述

原理:

通过导入mongo的相关驱动包,引用相关的数据包,在前置脚本中使用Groovy脚本进行连接并查询数据库。

1、导入对应的jar包

关于jar包大家可以直接到我提供的免费资源下载,也可以通过这个网址搜索下载:https://mvnrepository.com
在jar包下载后上传到MS平台。这里的上传分两种:①、普通管理元上传在项目的文件管理下,上传后文件的作用域只有在该项目下生效
通过普通管理员上传

②、admin管理员上传的系统的环境配置下-在项目管理菜单中上传jar包,上传后jar包的作用域为对应的应用空间
在这里插入图片描述

2、设置前置脚本

在MS的case编辑页面,点击添加前置脚本,并且前置脚本语言选择Groovy语言
前置脚本设置

3、编写前置脚本

3.1、连接Mongdb

//导入所有相关依赖
import com.mongodb.*
import com.gmongo.*

//连接数据库 这里的数据路连接信息为虚拟信息 大家对应替换就可以,端口一般都是27017
MongoCredential credentials = MongoCredential.createCredential("username","admin", "userpassword" as char[])
GMongoClient client = new GMongoClient(new ServerAddress("172.192.120.110",Integer.valueOf(27017)), [credentials])

log.info("<<<<<<<<<<<<<<<<<<<<<连接数据库成功<<<<<<<<<<<<<<<<<<<<<<<")

3.2、指定操作数据库和集合并查询数据

//这里的db_name指的就是一个数据库实例下多个数据库中的一个
def DB = client.getDB("db_name")
// 这里的tablename就是我们指定要操作的集合,在mysql中和表的概念对应,查询这个表中year字段为2020的一个文档
def datadb=DB.tablename.findOne([year:2020])

String redata=datadb
log.info("查询结果为:"+ redata)
//这里的paperId就类似与我们查找mysql的时候其中的一列属性,有一列字段是paperId,以上的datadb返回的是一个文档类似于mysql中的一行数据
def paperid= datadb.paperId

3.3、将获取的数据设置为变量

//将获取的数据设置为全局变量
vars.putObject(${__metersphere_env_id}+"test_paperid",paperid);
//设置为局部变量
vars.putObject("test_paperid",paperid);
//打印查询学生id结果
log.info("查询到的paperid为{}。", paperid)
client.close()

3.4、无注释版

//导入所有相关依赖
import com.mongodb.*
import com.gmongo.*

MongoCredential credentials = MongoCredential.createCredential("username","admin", "userpassword" as char[])
GMongoClient client = new GMongoClient(new ServerAddress("172.192.120.110",Integer.valueOf(27017)), [credentials])
log.info("<<<<<<<<<<<<<<<<<<<<<连接数据库成功<<<<<<<<<<<<<<<<<<<<<<<")

def DB = client.getDB("push_listen")
def datadb=DB.listen.findOne([year:2020])
String redata=datadb
log.info("查询结果为:"+ redata)
def paperid= datadb.paperId

vars.putObject(${__metersphere_env_id}+"test_paperid",paperid);
vars.putObject("test_paperid",paperid);
log.info("查询到的paperid为{}。", paperid)

client.close()

4、使用获取到的变量

1、在入参中使用获取到的变量

可以直接按照变量的引用方式使用:比如入参为:
{
“name”:“xaiohong”,
“year”: 2020
“id”:${paperId}
}

2、在断言中使用获取到的变量

在断言中使用比如:
断言响应结果中的某个数据与我们查询到的数据相等 或者 我们查询到的数据等于我们预期的某个值:
一种使用jsonpath断言,一种使用脚本断言
在这里插入图片描述脚本断言:
在这里插入图片描述

5、常用的查询语句

//在对应的表中取出一个文档数据
def DB = client.getDB("db_name")
def datadb=DB.table_name.findOne() 
 
//多条件查询出一条文档数据
def DB = client.getDB("db_name")
def datadb=DB.table_name.findOne(isValid:1,voiceId:"2053",voiceTime:827)
 
//查询 并按照升序排序
def DB = client.getDB("db_name")
def datadb=DB.table_name.findOne(isValid:1,year:2020).sort({_id:1})
 
//根据查询条件,指定查询一个文档的 _id和 year两列数据
def DB = client.getDB("db_name")
def datadb=DB.table_name.findOne([year:2020],[_id:1,year:1])
 
//查询一个文档 year的值在2020和2021之间的数据
def DB = client.getDB("db_name")
def datadb=DB.table_name.findOne(year:[$in:[2020,2021]])

6、mysql语法与mongodb查询语法对照比较

供大家参考学习!在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学(二)-- LeetCode[204] 计数质数

1 计数质数 1.1 题目描述 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;4 解释&#xff1a;小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 示例 2&#xff1a; 输入&#xff1a;n 0 输出&…

Redis学习之持久化(六)

这里写目录标题一、持久化简介1.1 持久化1.2 Redis持久化的两种形式二、RDB2.1 RDB概念2.2 save指令手动执行一次保存配置相关参数2.3 bgsave指令2.4 save配置自动执行2.5 RDB三种启动方式对比三、AOF3.1 AOF概念3.2 AOF执行策略3.3 AOF重写四、RDB和AOF区别2.1 RDB与AOF对比&a…

LQB04 蜂鸣器和继电器的操作。和代码

硬件图 编程实现 图中 &#xff0c;用Y5C控制ULN2003芯片。 所以要选通Y5C ; ULN2003芯片是个反相放大&#xff0c;IN口是1&#xff0c;OUT口出来是0&#xff1b;IN口是0&#xff0c;出来是1&#xff1b; 蜂鸣器和继电器&#xff0c;都是0点亮&#xff0c;发声&#xff1b;那…

macOS搭建Nexus 3.x为Maven的资源仓库服务器 Maven私服搭建

1 下载 Nexus 服务器安装包 目前的版本有 2.X 和 3.X &#xff0c;2.X 对 Maven 的支持更友好一点&#xff0c;3.X 的支持范围更广&#xff0c;支持 ruby 和 docker。但是 3.X 要求 JDK 的版本是1.8&#xff0c;而且貌似还需要做特殊配制。 官网地址&#xff1a;https://www.…

JVM笔记(7)—— Java对象创建的过程

一、对象创建的六种方式 1. new关键字 直接通过new关键字调用类的构造器创建 2. Class的newInstance()方法 通过类对象的newInstance()方法利用反射创建对象&#xff0c;只能调用权限为public的空参构造器&#xff0c;若对应类没有此构造器则会抛出编译时异常ClassNotFoundE…

redis基本入门| 怎么安装redis?什么的是redis?怎么使用?

目录 一、Redis下载与安装 二、基本概念 1.什么是Redis? 2.Redis端口多少&#xff1f; 3.Redis是单线程还是多线程&#xff1f; 4.Redis为什么单线程还这么快&#xff1f; 三、Redis的基本操作 四、Redis的五个基本类型 1.Redis-key 2.字符串 string 3.列表 list …

七大软件架构设计原则-读书笔记

7大原则 开闭原则&#xff08;Open-Closed Principle&#xff0c;OCP&#xff09; 指一个软件实体如类、模块和函数应该对扩展开放&#xff0c;对修改关闭。强调的是用抽象构建框架&#xff0c;用实现扩展细节&#xff0c;可以提高软件系统的可复用性及可维护性。开闭原则是面…

浅谈Redisson实现分布式锁对原理

1.Redisson简介 Redis 是最流行的 NoSQL 数据库解决方案之一&#xff0c;而 Java 是世界上最流行&#xff08;注意&#xff0c;我没有说“最好”&#xff09;的编程语言之一。虽然两者看起来很自然地在一起“工作”&#xff0c;但是要知道&#xff0c;Redis 其实并没有对 Java…

Win10开机输入密码后1分钟左右就蓝屏,一天出现10个不同蓝屏代码,如何解决

环境: DELL3480 Win10 专业版 问题描述: Win10 电脑开机输入密码后1分钟左右突然就蓝屏,一天出现10个不同蓝屏代码 1.BAD_SYSTEM_CONFIG_INFO bug 检查的值为 0x00000074。 此 bug 检查指示注册表中出现错误。 2.PAGE_FAULT_IN_NONPAGED_AREA bug 检查的值为 0x000…

修改redis的配置文件使得windows的图形界面客户端可以连接redis服务器

1. 安装 Redis 依赖 Redis 是基于 C语言编写的&#xff0c;因此首先需要安装 Redis 所需要的 gcc 依赖&#xff1a; yum install -y gcc tcl 2、上传安装文件 将下载好的 redis-6.2.7.tar.gz 安装包上传到虚拟机的任意目录&#xff08;一般推荐上传到 /usr/local/src目录&…

linux集群技术(三)--七层负载均衡-nginx

nginx特点nginx优势、缺点生产架构nginx 7层负载均衡语法示例nginx负载均衡算法测试案例生产案例 1.nginx特点 1. 功能强大,性能卓越,运行稳定。 2. 配置简单灵活。 3. 能够自动剔除工作不正常的后端服务器。 4. 上传文件使用异步模式。client---nginx---web1 web2 web3 lvs同…

uniapp: 基础开发官网文档

1、uniapp官网文档&#xff1a;https://uniapp.dcloud.net.cn/component/2、uView跨端UI组件库&#xff1a;http://v1.uviewui.com/components/intro.html3、lunch-request&#xff08;类似axios的请求库&#xff09;&#xff1a;https://www.quanzhan.co/luch-request/handboo…

图神经网络基础 Graph 图以及python实现

摘要&#xff1a; 本文将介绍图的基本知识、无向图、有向图、邻接矩阵 python实现&#xff1a;度、连通分量、强连通图、弱连通图、图直径、度中心性、特征向量中心性、中介中心性、连接中心性等基本概念。 python计算代码&#xff1a; 先安装依赖&#xff1a; pip install n…

Java-模块化

模块的基本使用 模块使用步骤 创建模块&#xff08;创建模块&#xff0c;创建包&#xff0c;创建类&#xff0c;定义方法&#xff09; -创建两个模块myOne,myTwo在模块的src目录下创建module-info.java的描述性文件&#xff0c;该文件专门定义模块名&#xff0c;访问权限&#…

一文读懂函数编程及其工作原理

微软MVP实验室研究员 马洪喜-微软 MVP 19年研发经验 云计算咨询顾问专家 容器云及基础架构云技术专家 DevOps 及微服务咨询专家 什么是函数编程 我先用通俗的大白话给大家解释一下函数(Functions, Function as a Service, FaaS)的几个要点&#xff0c;这样看后面示例时才不…

跑步带的耳机选择啥样的好、推荐几款跑步专用耳机

我是个比较喜欢运动的人&#xff0c;每天下班都会在小区湖边跑步健身&#xff0c;每次跑步要是少了耳机&#xff0c;那可没什么兴趣跑了&#xff0c;喜欢跑步的时候对着音乐的节奏跑&#xff0c;所以我的耳机基本上是用的比较紧实不易掉落的无线耳机。接下来我来为大家介绍下我…

ChatGPT 可收费的那种产品该如何实现?一点尝试

导读|时隔两个月&#xff0c;勇哥终于把chatGPT生成SQL的功能发布上线了&#xff0c;支持统计分析查询、创建表、数据生成等多种全面的SQL DDL生成能力&#xff0c;本文就和大家聊聊相关功能的使用和背后实现逻辑&#xff0c;并希望相关功能能帮助大家在工作中提升一定的工作效…

手把手搭建springboot项目05-springboot整合Redis及其业务场景

目录前言一、食用步骤1.1 安装步骤1.1.1 客户端安装1.2 添加依赖1.3 修改配置1.4 项目使用1.5 序列化二、应用场景2.1 缓存2.2.分布式锁2.2.1 redis实现2.2.2 使用Redisson 作为分布式锁2.3 全局ID、计数器、限流2.4 购物车2.5 消息队列 (List)2.6 点赞、签到、打卡 (Set)2.7 筛…

如何弄小程序?公司企业可以这样做小程序

公司企业现在对于小程序的需求已经是刚需了&#xff0c;即使已经有官网的情况下&#xff0c;也会考虑再弄一个小程序来做小程序官网。那么公司企业如何弄小程序呢&#xff1f;下面跟大家说说方法。 流程一、找小程序服务商 由于一些公司企业并不像现在的互联网公司企业那样有…

考试系统 (springboot+vue前后端分离)

系统图片 下载链接 地址&#xff1a; http://www.gxcode.top/code 介绍 一款多角色在线培训考试系统&#xff0c;系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能&#xff0c;考试流程完善。 技术栈 Spr…