標籤:style blog color java 使用 os io strong
MongoDB基礎知識
1. 文檔
文檔是MongoDB中的資料的基本單元,類似於關係型資料庫管理系統的行。
文檔是索引值對的一個有序集。通常包含一個或者多個索引值對。
例如:
{”greeting" : "Hello, world!", "foo", 3}
2. 集合(collection)
集合就是一組文檔,類似關係型資料庫中的一張表。
3. 資料庫(database)
多個文檔組成集合,多個集合組成資料庫。一個MongoDB執行個體可以承載多個資料庫。
MongoDB中保留的有特殊語義的資料庫:admin, local, config。
4. 啟動MongoDB
運行mongod,啟動資料庫伺服器。
Last login: Fri Aug 22 11:03:36 on ttys001zhangxindeMacBook-Pro:~ zhangxin$ mongodmongod --help for help and startup options2014-08-22T11:51:55.900+0800 [initandlisten] MongoDB starting : pid=596 port=27017 dbpath=/data/db 64-bit host=zhangxindeMacBook-Pro.local2014-08-22T11:51:55.901+0800 [initandlisten] 2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 10002014-08-22T11:51:55.901+0800 [initandlisten] db version v2.6.42014-08-22T11:51:55.901+0800 [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee9102014-08-22T11:51:55.901+0800 [initandlisten] build info: Darwin bs-osx108-4 12.5.0 Darwin Kernel Version 12.5.0: Sun Sep 29 13:33:47 PDT 2013; root:xnu-2050.48.12~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_492014-08-22T11:51:55.901+0800 [initandlisten] allocator: system2014-08-22T11:51:55.901+0800 [initandlisten] options: {}2014-08-22T11:51:55.902+0800 [initandlisten] journal dir=/data/db/journal2014-08-22T11:51:55.902+0800 [initandlisten] recover : no journal files present, no recovery needed2014-08-22T11:51:55.996+0800 [initandlisten] waiting for connections on port 27017
mongod在沒有參數的情況下會使用預設資料目錄,/data/db (windows系統中是C:\data\db),如果目錄不存在或者不可寫,伺服器啟動會失敗。
在mac或者linux下可以用mkdir -p /data/db/ ,確保建立的目錄有寫入權限。
關閉mongod,可用 Ctrl + C來關閉。
5. MongoDB shell 簡介
在確保mongod 已經啟動的情況下,開啟一個新的命令列運行mongo啟動shell。
Last login: Fri Aug 22 11:51:24 on ttys001zhangxindeMacBook-Pro:~ zhangxin$ mongoMongoDB shell version: 2.6.4connecting to: testServer has startup warnings: 2014-08-22T11:51:55.901+0800 [initandlisten] 2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000>
shell是一個功能完備的JavaScript解譯器,可運行任何JavaScript程式。
5.1 要查看當前指向哪個資料庫,可以使用db命令:
為方便SQL shell的使用者,shell還包含了一些非JavaScript文法的擴充。
選擇資料庫使用use + dbname(資料庫名稱),再使用db 查看db變數,則發現已經指向了dbname資料庫。
Last login: Fri Aug 22 11:51:24 on ttys001zhangxindeMacBook-Pro:~ zhangxin$ mongoMongoDB shell version: 2.6.4connecting to: testServer has startup warnings: 2014-08-22T11:51:55.901+0800 [initandlisten] 2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000> dbtest> use zhangxindbswitched to db zhangxindb> dbzhangxindb>
5.2 shell 中的基本操作
5.2.1 建立
insert 函數可將一個文檔添加到集合中。
建立一個名為post的局部變數,這是一個JavaScript對象,用於表示我們的文檔。
> 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" : ISODate("2014-08-22T03:53:31.624Z")}>
這個對象是一個有效MongoDB文檔,用insert方法儲存到blog集合中。
> db.blog.insert(post)WriteResult({ "nInserted" : 1 })> db.blog.findOne(){ "_id" : ObjectId("53f6bee6ef70aed220766a98"), "title" : "My Blog Post", "content" : "Here‘s my blog post.", "date" : ISODate("2014-08-22T03:53:31.624Z")}>
5.2.2 讀取
find和findOne()方法可以用於查詢集合裡的文檔。如中所示。
5.2.3 更新
使用update修改部落格文章。update方法至少接收兩個參數,第一個是限定條件,第二個是新的文檔。比如:
> post.comments = [][ ]> post{ "title" : "My Blog Post", "content" : "Here‘s my blog post.", "date" : ISODate("2014-08-22T03:53:31.624Z"), "comments" : [ ]}> db.blog.update({title:"My Blog Post"},post)WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.blog.findOne(){ "_id" : ObjectId("53f6bee6ef70aed220766a98"), "title" : "My Blog Post", "content" : "Here‘s my blog post.", "date" : ISODate("2014-08-22T03:53:31.624Z"), "comments" : [ ]}>
4. 刪除
使用remove方法可將文檔從資料庫中永久刪除。如果沒有任何參數,會將集合內所有文檔全部刪除。
> db.blog.remove({title:"My Blog Post"})WriteResult({ "nRemoved" : 1 })> db.blog.findOne()null
本文適合零基礎並且想快速入門的同學,寫的非常簡略簡單就是為了用最短的時間入門,在入門後,再逐步深入,細細挖掘。不適合有基礎,或者想慢慢啃的同學,相當於是快餐吧。有錯誤請不吝賜教。
參考資料:《MongoDB權威指南》
實驗環境:mac 64位