1. 程式人生 > >java操作mongodb之select(一般查詢)

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條數。