mongoDB查询小工具

最近为了自动化测试平台上能覆盖mongodb写数据相关的测试点,参考开发写的代码,搞了一个查询mongo的小工具。

首先是把开发定义的数据结构放到一个DTO里面。(一般开发都定义在自己代码里了,照着抄就行)

然后再定一个config

@Configuration
public class MongoDBConfig{


    @Value("芒果地址")
    private String url;

    @Bean
    public MongoDbFactory mongoDbFactory(){
        System.out.println("url:"+url);
        MongoClientURI uri = new MongoClientURI(url);
        return new SimpleMongoDbFactory(uri);
    }

最后定一个controller调用,collection是集合,之前的文章有介绍

@RestController
public class MongoDBController {
    @Autowired
    MongoTemplate mongotemplate;


    @RequestMapping(value="/getMongo",method = RequestMethod.GET)
    @ResponseBody
    public BaseReuseMBDTO queryLatestOne(@RequestParam(value = "key",required = true) String 你的key,
                                         @RequestParam(value = "collection",required = true) String col) {
        Query query = new Query();
        //这里的逻辑和开发的逻辑需要保持一致,不然未来断言出来不准确
        query.addCriteria(Criteria.where("key").is(你的key));
        query.with(new Sort(Sort.Direction.DESC, "timestamp"));
        //集合名称
        BaseReuseMBDTO mongores = mongotemplate.findOne(query, BaseReuseMBDTO.class, col);
        return mongores;
    }

可能会遇到接口里面有特殊字符,再加一个tomcat的config,解决

@Configuration
public class TomcatConfig {

    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers((Connector connector) -> {
            connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
            connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        });
        return factory;
    }
}

实际场景下的运用:

因为测试平台和中间件在2个服务器上,服务器之间存在几秒钟误差,所以加了一个时间容错。

def check_mongo(request,response):
    timesleep(3)
    url = "http://XXXXXXX/getMongo"
    params = {
        "rowkey": request["params"]["rowkey"],
        "collection":  request["params"]["collection"],
        "isMock": request["params"]["isMock"],
        "ts": str(int(request["params"]["timestamp"]) - 3600),
    }
    try:
        res_1 = requests.get(url=url, params=params)
        if res_1.text == "":
            response.json['res'] = None
        res = res_1.json()
        response.json['res'] = res
    except:
        print('something wrong')
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值