mongodb簡單查詢

來源:互聯網
上載者:User

      最近一段時間比較閑,老大做代碼整合,我得以有足夠的時間來學習。因為語言學多了,慢慢也覺得沒有什麼意思了。其他組用mongodb,我也跟下潮流,學習了一點。鑒於我這種快速上手的,因為基礎不怎麼牢靠,也總是會忘記。看著《mongodb權威指南》,雖然是英文版的,但是沒有一點閱讀的難度,大概是這本書寫得確實是讓人好理解吧。平時看一些英文的資料,堅持一個小時就不錯了,犯困,看這個,不會困,只是會有些命令不能馬上理解。先說下查詢吧。我覺得我對於資料庫的瞭解只是限於增刪改查這些操作,至於更深入的東西,不管是對於哪種資料庫都沒有深入接觸過。畢竟不是DBA嘛,我們只要知道怎樣用自己熟悉的語言調用資料庫就好了。

      關於mongodb的一些介紹,我也不再累贅了,網上多得是,據說是非關係型資料庫,好多時候感覺不像是資料庫,更接近某些函數,當然mongodb確實封裝了很多函數了。

 1.find

   

  content是一個collection,相當於關係型資料庫中的表,db是固定不變的。如果find中沒有帶參數,就相當於

 select * from table

  返回資料表中的所有記錄的所有欄位。

 可以查詢符合某些條件的記錄(document)。


查詢gender欄位是male的document,相當於select * from table where gender=male

當然查詢條件可以是多個


很簡單的語句,我就不做太多解釋了,大家都懂得啊。

所有欄位都返回,把人看得眼花繚亂的,要是能選擇關注的欄位就好了。那是當然了。


其中_id是插入資料之後,資料庫自動給加上的,相當於主鍵。一定要看清楚了,find所帶的參數,除條件之外,還有一個{},將欄位的值設定為1表明是要將這個欄位顯示出來。_id雖然沒有顯式輸出,也會輸出。當然,還可以 指定不要輸出的欄位,


將_id設定為0,表明明確聲明不顯示這個欄位,所以就只顯示我們強烈要求要輸出的欄位嘍!

2.使用>,>=,<,<=,!=分別對應gt,gte,lt,lte,ne

例如尋找age在10到25之間的document


尋找degree不是bachelor的document


關於or,有兩種實現方法,當然,這兩種方法對應不同的情境。

使用in,判斷某個欄位是否屬於集合中的一員,

例如查看age是11或者15或者22或者是25的document


使用nin尋找不在一個範圍之內的


當然,使用in來判斷時候是有局限性的,只能判斷一個欄位。如果是需要匹配兩個欄位,in就不能滿足要求了,那就需要or關鍵字了。


 mod是求餘運算,跟在其他課程中學習的並沒有什麼兩樣。第一個參數是除數,第二個參數是餘數。


3.具體類型查詢


這是content種的各個document,下面要對這個collection進行查詢

null大家應該很熟悉,就是空。在content中有一個document的post欄位是null。如果想尋找這個document,


如上查詢結果,除了post確實為null的document之外,沒有post地段的也都輸出了,這個肯定是不符合要求的,這時候exists關鍵字出現了。



mongodb中支援Regex,

比如尋找name是lunar或者是Lunar的document

flags(i)是可有可無的,有則表明忽略大小寫

我們可以尋找包含某些字串的,與常見的Regex沒有什麼不同。


尋找數組

先看collection的結構


如果你想尋找的字串要匹配不只一個欄位,可以使用$all來實現。


數組的匹配通常來說都是精確匹配的,這樣一來,如果數組中內容的順序不同,會導致不正確的尋找結果。


索引是 從零開始的,上述語句指名要查詢的數組的第二個元素是apple.

4嵌套結構的尋找

使用的collections


如果想尋找叫xin lau的document,則下列語句是對的


但是我們突然想給這個document增加一個middle欄位,那麼上面的查詢語句就立馬失效了。因為mongodb中都是精確匹配每個欄位的,那怎麼辦呢?明確指定欄位


上述是總結的一點點新的,覺得mongodb好像也不難,只是現在還是不熟悉它的一些奇妙的地方,覺得不像是一種資料庫,更像是一種函數功能很強大的工具。不過,後續可能還會繼續關注

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.