java操作mongodb之select(一般查詢)
一:環境搭建
環境搭建程式碼(SSM+mongdb)點選開啟連結
二:驗證mongoTemplate.find()
兩個collection,分別是customer和order,其中order中有欄位orderCode,customer中有一個document也有一個orderCode欄位。下面是兩個collection情況。
第一種情況:find(query, Entity.class)
寫法:
結論:沒有給出collectionName進行查詢,Order實體中也有屬性,orderCode。並且colletion是customer中有orderCode。沒有查詢到任何資料。
修改寫法
結果:
第二種情況:find(query, Entity.class,collectionName)
寫法:
結果:
剛好驗證了,到指定表去查詢。但是在第一種情況,第一種寫法,它並沒有獲取到這樣的結果,所以可以推斷,如果沒有加collectionName,則去Entity.class對應的collection去查詢。比如Order.class,對應order collection,其他collection不管。
修改寫法
結果:
推斷:
1,mongoTemplate.find(query, Entity.class) ,預設去colletion為Entity進行查詢。並把結果封裝為Entitiy.查詢滿足條件的所有document.
2,mongoTemplate.find(query,Entity.class, collectionName);到指定的colletion中查詢,並把結果封裝為Entity.查詢滿足條件的所有document.
3,mongoTemplate.findOne(query, Entity.class)對比mongoTemplate.find(query, Entity.class);可以猜測,他們唯一的差別是一個查詢滿足條件的一個 document,而另個是滿足條件的所有。
4,mongoTemplate.findOne(query, Entity.class, collectionName);到指定的collection中查詢,並把結果封裝為Entity,只要一個document.
5,mongoTemplate.findById(query, Entity.class);通過id到預設collection為Entity進行查詢,並把結果封裝為Entity.
6, mongoTemplate.findById(query, Entity.class, collectionName);通過id到指定的collection中去查詢.
7, mongoTemplate.findAll(Entity.class);推測,到預設collection為Entity進行查詢,並封裝為Entity,無條件的,查詢到collection中所有,哪怕有上億個document?
8, mongoTemplate.findAll(Entity.class,collectionName);推測,到指定collection為colletionName中查詢,無條件,查詢所有,並封裝成Entity.如果檢測到條件查詢時,頁面一個條件也沒有,則直接呼叫這個方法,不過得配合分頁,查詢指定的document條數。