mongodb数据库查询条件

今天在写代码的过程中发现一个问题,就是mongo查询语句中,如果变量的属性不一致,会导致查询不出来结果。

public AnnulUser findByUserId(String userId, int bizId){
        Criteria criteria = Criteria.where("userId")
                .is(userId)
                .and("bizId").is(bizId);
        return queryOne(criteria,AnnulUser.class);
    }

这个可以查出来,下边就不行

public AnnulUser findByUserId(String userId, String bizId){
        Criteria criteria = Criteria.where("userId")
                .is(userId)
                .and("bizId").is(bizId);
        return queryOne(criteria,AnnulUser.class);
    }

在存数据库的时候,这个属性是int类型,所以查询的时候也要是这个类型。
不管是上边那种用mongoTemplate还是MongoRepository都有这个问题,一定要注意不要写错类型。
但是对于下面这种写法的sql则没有这种问题

@Select({
            "select * from user",
            "where mobile=#{mobile}"
    })
    ZXUser findByMobile(String mobile);

    @Select({
            "select * from user",
            "where mobile=#{mobile}"
    })
    ZXUser findByMobileLong(Long mobile);

本来我也以为最后都是转成string类型的查询语句,但是mongo给我上了一课,没那么简单。。。有空好好看看区别是什么,最简单的方法就是老老实实写清楚每个字段的对应类型。


版权声明:本文为weixin_45614626原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。