如果你的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);