java mongo查询(包括集合中数组的查询等)(持续更新中)

如果你的java项目中使用到了org.springframework.data.mongodb包的话,那么本篇文章可能有你需要的东西。
Query query= new Query();//先new一个拼接查询的语句出来  Query全类名:
org.springframework.data.mongodb.core.query.Query;大家别引错了

废话不多说,开整:

1、一般查询

query.addCriteria(Criteria.where("hh").is(1)); 相当于:where hh= 1;

  query.addCriteria(Criteria.where("aa").is("dd")); 相当于:where hh= 1 and aa = "dd" 多个条件可以无限添加

mongoTemplate.find(query, userEntity.class);相当于:select * form userEntity where hh = 1 and aa = "dd"

2、一般查询之大于/小于等

query.addCriteria(Criteria.where("date").gte(new Date()).lte(new Data())); gte-大等于  lte-小等于  gt-大于 lt- 小于

如果是时间的话  传入java.util.Date格式,如果是int的话  传入int类型即可,数据库会自动转换查询,如果数据库是数字 你传入“1"字符串,会有查询不到的情况

3、查询结果字段排除

query.fields().include("hh")  //查询出来的结果只包含hh字段(id是默认的,也会被查出来)的信息,其他的被排除掉了 多的话,直接.include("aa")即可,可无限追加,当然你的集合(表)中有这些字段

query.fields().exclude("hh")  //查询出来的结果不包含hh字段,其他的都会被查出来(id字段是排除不掉的),如果想排除多个的话直接.exclude("aa")即可,可无限追加,当然你的集合(表)中也有这些字段

4、多表查询

多表查询相对困难,研究多日无果,后放弃了,如果你还是想要去多表查询,请另行咨询广大网友(百度一下),如果你咨询后发现很麻烦 想要放弃另寻他路,你可以阅读一下我的另一篇博文@DBRef的使用,也许会对你有所帮助!

5、数组字段查询

示例(user集合中的两条数据):

{

"id":"123213",

"realName":"小面"

"role" : [{
                "rt" : "1", 
                "name" : "老师",

                "val" : "xxy"
            }, 
            {
                "rt" : "3", 
                "name" : "主任"

                "val" : "xyx"
            }
        ]

},

{

"id":"123217",

"realName":"小柳"

"role" : [{
                "rt" : "3", 
                "name" : "老师",

                "val" : "yyx"
            }]

}

如果你想要通过role中的“老师”查询数据的话:

query.addCriteria(Criteria.where("role.name").is("老师"))

会将这两条数据都查出来

如果你想通过 同时满足"rt"和"name"来精确的查询"小面"这一条数据的话,你需要这样写:

Document doc = new Document(); (org.bson.Document)

Document append = doc.append("role", new Document("$elemMatch", new Document("rt", "1").append("name","老师")));

Query query = new BasicQuery(append);

 


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章