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);

 


 

 

 

 

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