1. 程式人生 > >Ruby操作MongoDB(進階三)-集合collection

Ruby操作MongoDB(進階三)-集合collection



上篇文章主要介紹了Ruby操作MongoDB資料的四個基本操作,建立文件,讀取文件,更新文件和刪除文件的操縱方式,命令和引數的使用方式。本章我們繼續Ruby操作MongoDB的進階學習,集合Collection。

與傳統的關係型資料庫不同,MongoDB資料庫將文件儲存在集合中。如果集合不存在,MongoDB資料將會在你第一次向集合中插入文件的時候建立這個集合。同樣,你也可以通過多種諸如文件尺寸最大值和校驗規則等可選引數顯式地建立集合

  1. 固定集合

   固定集合有最大尺寸或文件個數的限制,從而確保集合不會增長到超過集合的限制。所有的固定集合都需要設定最大尺寸和最大文件個數。如果集合達到了最大尺寸的限制,但是未達到最大文件個數的限制,MongoDB資料庫會移除集合中的建立時間較早的文件。

   在設定位元組大小時使用capped:true屬性則建立了固定集合。

   client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'film')

   client[:actors,capped:true,size:10000].create

2.將一個已存在的集合轉變為固定集合

   將一個已存在的非固定集合轉變為固定集合,使用commond指令的convertToCapped引數。

   client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'test')

   db=client.database

   db.commond({'convertToCapped'=>'contacts','size'=>8192})

3. 文件檢驗

   如果你使用3.2及其之後的MongoDB版本,你就可以使用文件校驗功能。擁有檢驗功能的集合在接受插入或更新集合中文件時會與特定的校驗規則進行比較。如果插入或更新文件時沒有通過校驗功能,取決於校驗層級validationLevel和校驗步驟validationAction,MongoDB要麼會返回一個警告,要麼會拒絕文件的插入和更新。

下面的例項建立了一個擁有校驗器的contacts集合,在這個集合中進行插入和更新文件資訊時,文件必須至少滿足三個條件中的一個條件:

   phone欄位為String型別

   email欄位匹配了給定的正則表示式

   status狀態欄位要麼是Unknown要麼是Incomplete

   client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'test')

   client[:actors,

         {

           'validator'=>{'$or'=>

          [

             {'phone'=>{'$type'=>"string"}},

             {'email'=>{'$regex'=>"/@mongodb\.com$/"}},

             {'status'=>{'$in'=>["Unknown","Incomplete"]}}

          ]

          }

          } 

         ].create

4. 現有集合增加校驗功能

      通過commond指令的collMod屬性實現對現有集合新增校驗器的功能。下面的例子展示了怎樣給contacts集合增加校驗器,確保所有的文件都必須包含數字型別的age欄位。

     client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'test')

     db=client.database

     dn.commond({‘collMod’=>'contacts',

                  'validator'=>{'age'=>{'$type'=>"number"}}

            })

到此,MongoDB中集合的功能講述完畢