MongoDB學習筆記(入門)

來源:互聯網
上載者:User

一、文檔的注意事項:
1.  索引值對是有序的,如:{ "name" : "stephen", "genda" : "male" } 不等於 { "genda" : "male", "name" : "stephen" }
2.  文檔資訊是大小寫敏感的,如:{ "name" : "stephen" } 不等於 { "Name" : "stephen" }
3.  文檔資訊是區分類型的,如:{ "age" : 30 } 不等於 { "age" : "30" }
4.  文檔中不能出現重複鍵,如:{ "name" : "stephen", "name" : "liu" }

 

二、使用多個集合的必要性:
1.  如果把各種模式的文檔存放在一個集合中,對於開發人員來說是非常災難的。因為在擷取到查詢結果之後,就需要手工編寫代碼過濾不同類型的文檔了。
2.  會使查詢效率降低。試想一下,假設某個模式的文檔的資料量相對較少,如果仍然將其放到一個通用的大集合中,其查詢效率勢必會大大低於將其放到獨立的集合中。
3.  在建立索引時,如果所有的文檔均為同一模式,那麼索引的利用率將會更加高效。

 

三、集合的命名注意事項:
1.  集合名不能是Null 字元串""。
2.  不要以system開頭,這一般是為系統保留的,如system.users集合中儲存了資料庫的使用者資訊,而system.namespace集合中保留了資料庫集合的資訊。
3.  不要在集合名裡麵包含'$'字元。
4.  子集合只是一種較好的集合規劃方式,如blog.posts和blog.anthurs,實際上它們和blog集合之間沒有任何關係,甚至blog集合可以不存在。

 

四、資料庫:
在同一個MongoDB伺服器中可以存在多個資料庫,每個不同的資料庫儲存在不同的檔案中。又由於資料庫名和檔案名稱是綁定的,因此資料庫名會有一些限制。
1.  不能是Null 字元""。
2.  全部小寫且不超過64位元組。
3.  不得含有檔案名稱命名中的非法字元。
4.  admin資料庫是管理資料庫,如果某個使用者位於該資料庫中,他將自動繼承所有資料庫許可權。一些特定的伺服器命令也只能從這個資料庫運行。
5.  local這個資料庫永遠不會被複製,只是用於儲存限於本地單台伺服器的任意集合。
6.  資料庫名.集合名,表示該集合的完全限定名,其長度不要超過121自己。

 

五:MongoDB的啟動:
1.  直接執行mongod即可,在沒有任何命令列參數的情況下,伺服器的主機中必須包含/data/db目錄,對於Windows而言,其預設目錄則為服務程式所在磁碟機的\data\db。如D盤,則為D:\data\bin。預設監聽連接埠為27017。
2.  MongoDB內建了一個JavaScript Shell,可以從命令列與MongoDB互動。如:mongo。這個Shell工具可以直接執行簡單的數學運算。如:

    > x = 200
    200
    > x /5
    40
    --還可以調用JavaScript的標準庫。
    > new Date("2012/05/05")
    ISODate("2012-05-04T16:00:00Z")
    > "Hello World".replace("World", "MongoDB")
    Hello MongoDB
    --定義和調用自訂的JavaScript函數。
    > function factorial(n) {
    ... if (n <= 1) return 1
    ... return n * factorial(n - 1)
    ... }
    > factorial(5)
    120
3.  在Shell用戶端插入MongoDB的文檔,如:
    > post = { "title" : "my blog post", "content" : "Here's my blog", "date" : new Date() }
    {
         "title" : "my blog post",
         "content" : "Here's my blog",
         "date" : ISODate("2012-06-04T07:38:51.345Z")
    }
    > db.blog.insert(post)
    > db.blog.find()
    { "_id" : ObjectId("4fcc661de4bcbac15b3d9e3a"), "title" : "my blog post", "content" : "Here's my blog",
    "date" : ISODate("2012-06-04T07:38:51.345Z") }

4.  在Shell用戶端查詢文檔,如:
    > db.blog.findOne()
    {
         "_id" : ObjectId("4fcc661de4bcbac15b3d9e3a"),
         "title" : "my blog post",
         "content" : "Here's my blog",
         "date" : ISODate("2012-06-04T07:38:51.345Z")
    }
5.  在Shell中更新文檔,如:
    --需要先更新post變數的內容,即先增加了一個comments的鍵,其值為空白數組。
    > post.comments = []
    [ ]
    --update的第一個參數是條件,第二個參數是待更新的值。
    > db.blog.update({ "title" : "my blog post"}, post)
    > db.blog.findOne()
    {
         "_id" : ObjectId("4fcc661de4bcbac15b3d9e3a"),
         "title" : "my blog post",
         "content" : "Here's my blog",
         "date" : ISODate("2012-06-04T07:38:51.345Z"),
         "comments" : [ ]
    }
6.  在Shell用戶端中刪除,如:
    --如果remove中沒有條件,則清除集合中的全部資料。
    > db.blog.remove( { title:"my blog post"})
    > db.blog.findOne()
    null

 

六、Shell的使用小技巧:
    > show dbs  --顯示資料庫名。
    > show collections --顯示集合名
    > show users --顯示使用者名稱
    > db.help()  --列出資料庫的方法。
    > db.blog.help() --列出blog集合上的方法。
    > db.blog.update --可以直接看update方法的JavaScript實現代碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.