程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MongoDB數據庫 >> MongoDB綜合知識 >> MongoDB教程之入門基礎知識

MongoDB教程之入門基礎知識

編輯:MongoDB綜合知識

一、文檔的注意事項:

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.  集合名不能是空字符串""。
2.  不要以system開頭,這一般是為系統保留的,如system.users集合中保存了數據庫的用戶信息,而system.namespace集合中保留了數據庫集合的信息。
3.  不要在集合名裡面包含'$'字符。
4.  子集合只是一種較好的集合規劃方式,如blog.posts和blog.anthurs,實際上它們和blog集合之間沒有任何關系,甚至blog集合可以不存在。

四、數據庫:

在同一個MongoDB服務器中可以存在多個數據庫,每個不同的數據庫存儲在不同的文件中。又由於數據庫名和文件名是綁定的,因此數據庫名會有一些限制。
1.  不能是空字符""。
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實現代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved