MongoDB權威指南(1)- Getting Started

來源:互聯網
上載者:User

最近公司考慮重構資料,因為資料比較複雜,我覺得mongoDB是個非常合適的選擇,就瞭解了一下,

一看之下,嘿,還挺有意思,所以就有了這個系列的讀書筆記,如果有什麼不當,請不吝指出。

另外,有些專用的詞彙我沒有翻譯,一個是不好翻譯,另外是我覺得翻譯了反而會妨礙理解。

本書電子書下載連結 http://download.csdn.net/source/3399006

mongoDB下載連結 http://www.mongodb.org/downloads

--------------------------------------------------------------------------------------------------------------

安裝

  解壓縮出來就OK了,mongoDB預設使用磁碟根目錄的data檔案夾和data\db檔案夾,

  這兩個檔案夾需要手工建立,如果想使用其他路徑,那麼啟動mongoDB的時候需要指明路徑

運行

  運行CMD開啟控制台視窗,導航至mongodb的bin目錄,運行mongod.exe,伺服器就啟動起來了,按ctrl-c結束程式。

  另開一個控制台視窗,導航至mongodb的bin目錄,運行mongo.exe來啟動shell,就連結到伺服器了,預設串連到test資料庫。

-------------------------------------------------------------------------------------------------------------

OK,第一章講mongoDB如何如何牛b的我們就隔過去啦,這裡直接是第二章。

1.一些基本概念

  document :mongoDB裡邊資料的基本單位,相當於關聯式資料庫裡的行

  collection: 相當於關聯式資料庫的表,不過是沒有資料結構定義的

  每個mongoDB的執行個體可以運行多個database,每個database有自己的collection和許可權控制

  mongoDB擁有一個強大的javascript shell,用於管理資料庫和操作資料

  每個document都有一個特殊的key:"_id",這個值在collection內是唯一的

document

document是一組有序的key/value對,使用json風格的資料。

{"foo" : 3, "greeting" : "Hello, world!"}

key是個UTF-8字串,value 可以是很多類型,甚至是一個嵌入的document。

collection

collection是一組document,它是無結構定義的,所以你可以把任何document存入一個collection裡。

subcollection

一個習慣性的組織collection的方式,使用.號分隔,像命名空間。例如,程式裡使用了一個blog,它可能包含一個collection叫blog.post和另外一個collection叫blog.authors,這僅僅是出於組織內容的目的,它們倆看起來像是blog的子集,實際上他們沒有任何關係,甚至blog也許就是不存在的。

database

一個mongoDB的執行個體可以運行多個database,database之間是完全獨立的,每個database有自己的許可權,每個database儲存於磁碟的不同檔案。

2. mongoDB shell

shell本身就是一個javascript解譯器,讓我們來幹點啥來看看

可以進行數學運算

> x = 200
200
> x / 5;
40

可以使用標準的javascript庫

> Math.sin(Math.PI / 2);
1
> new Date("2010/1/1");
"Fri Jan 01 2010 00:00:00 GMT-0500 (EST)"
> "Hello, World!".replace("World", "MongoDB");
Hello, MongoDB!

甚至可以定義javascript函數

> function factorial (n) {
... if (n <= 1) return 1;
... return n * factorial(n - 1);
... }
> factorial(5);
120

能夠執行javascript確實很cool,當然這不是shell的全部功能。

  • 使用use命名切換資料庫
> use foobar
switched to db foobar

然後就可以查看db變數來看看當前資料庫是啥

> db
foobar
  • 使用insert函數想collection插入document

先建立一個本地變數叫post

> post = {"title" : "My Blog Post",
... "content" : "Here's my blog post.",
... "date" : new Date()}
{
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : "Sat Dec 12 2009 11:23:21 GMT-0500 (EST)"
}

然後把它插入到叫blog的collection裡邊去

> db.blog.insert(post)

然後我們可以用find函數看看blog裡邊的內容

> db.blog.find()
{
"_id" : ObjectId("4b23c3ca7525f35f94b60a2d"),
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : "Sat Dec 12 2009 11:23:21 GMT-0500 (EST)"
}

裡邊自動加了個叫"_id"的key。

  • find返回collection裡的書有document,如果只想查看一個使用findone> db.blog.findOne()
    {
    "_id" : ObjectId("4b23c3ca7525f35f94b60a2d"),
    "title" : "My Blog Post",
    "content" : "Here's my blog post.",
    "date" : "Sat Dec 12 2009 11:23:21 GMT-0500 (EST)"
    }

find和findone都可以有查詢條件,第4章查詢裡邊會講。

  • 使用update來更新document

update函數要有至少兩個參數,第一個是條件,第二個是新的document

先給post變數加一個叫comments的key,給它一個空數組做value。

> post.comments = []
[ ]

執行更新,替換掉title是“My Blog Post”的那個document

> db.blog.update({title : "My Blog Post"}, post)

看看結果

> db.blog.find()
{
"_id" : ObjectId("4b23c3ca7525f35f94b60a2d"),
"title" : "My Blog Post",
"content" : "Here's my blog post.",
"date" : "Sat Dec 12 2009 11:23:21 GMT-0500 (EST)"
"comments" : [ ]
}
  • 使用remove刪除document> db.blog.remove({title : "My Blog Post"})

    現在這個collection就又空了。

3.基礎資料型別 (Elementary Data Type)

  • null
    表示一個空值或者不存在的欄位
  • boolean
  • 32位整數
    shell中無法表示,javascript只支援64位浮點小數,所以會被轉化為64位浮點小數。
  • 64位整數
    同上
  • 64位浮點小數
  • 字串
  • symbol
    shell不支援此類型,來自資料庫中的symbol類型資料會轉化為字串
  • object id
    0 1 2 3     |4 5 6     |7 8   |9 10 11
    Timestamp|Machine | PID  |Increment
  • date
  • Regex
  • code
  • 位元據
  • maximum value
    bson有這樣一個專門的類型來表示可能的最大值,shell不支援此類型。
  • minimum value
  • undefined
  • array
  • embeded document
相關文章

聯繫我們

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