MongoDB簡介與增刪改查
一、簡介
MongoDB 是由C++語言編寫的,是一個基於分布式檔案儲存體的開來源資料庫系統。MongoDB 旨在為WEB應用提供可擴充的高效能資料儲存解決方案。MongoDB 將資料存放區為一個文檔,資料結構由索引值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。欄位值可以包含其他文檔,數組及文檔數組。
mongodb資料類型:
資料類型 |
描述 |
String |
字串。儲存資料常用的資料類型。在 MongoDB 中,UTF-8 編碼的字串才是合法的。 |
Integer |
整型數值。用於儲存數值。根據你所採用的伺服器,可分為 32 位或 64 位元。 |
Boolean |
布爾值。用於儲存布爾值(真/假)。 |
Double |
雙精確度浮點值。用於儲存浮點值。 |
Min/Max keys |
將一個值與 BSON(二進位的 JSON)元素的最低值和最高值相對比。 |
Arrays |
用於將數組或列表或多個值儲存為一個鍵。 |
Timestamp |
時間戳記。記錄文檔修改或添加的具體時間。 |
Object |
用於內嵌文檔。 |
Null |
用於建立空值。 |
Symbol |
符號。該資料類型基本上等同於字串類型,但不同的是,它一般用於採用特殊符號類型的語言。 |
Date |
日期時間。用 UNIX 時間格式來儲存當前日期或時間。你可以指定自己的日期時間:建立 Date 對象,傳入年月日資訊。 |
Object ID |
物件識別碼。用於建立文檔的 ID。 |
Binary Data |
位元據。用於儲存位元據。 |
Code |
代碼類型。用於在文檔中儲存 JavaScript 代碼。 |
Regular expression |
Regex類型。用於儲存Regex。 |
二、操作
1、資料庫操作指令
(1)建立資料庫
命令:use dbname ,例:use test 如果資料庫test存在則選中test資料庫,如果不存在則建立資料庫test。
(2)查看所有資料庫
命令:show dbs
(3)刪除資料庫
命令:db.dropDatabase() 即可刪除當前資料庫
2、文檔操作指令
mongodb中的文檔相當於關係型資料庫中的row,文檔的資料結構BSON和JSON基本一樣。
(1)插入文檔
MongoDB 使用 insert() 或 save() 方法向集合中插入文檔,文法如下:db.COLLECTION_NAME.insert(document).
例:db.mycol.insert({name:'test1',age:20,sex:'male'}),其中mycol是集合名稱,如果該集合不存在則mongodb會先自動建立。
也可以使用db.COLLECTION_NAME.save(document)插入文檔,類似於insert,如果指定了_id欄位則更新該_id的文檔。
(2)更新文檔
mongodb使用update或者save更新文檔,update文法:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
query:update的查詢條件;
update:update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set後面的;
upsert:可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
multi:可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。
writeConcern:可選,拋出異常的層級。
例:首先插入一條文檔:db.mycol.insert({name:'test1',age:1,sex:'male'}),然後再執行更新操作:db.mycol.update({'name':'test1'},{$set:{'sex':'formale'}})結果如下:
如果需要修改合格多條文檔則把multi設為true。例:db.mycol.update({'name':'test1'},{$set:{'sex':'formale'}},{multi:true})
save方法:通過傳入的文檔來替換已有文檔。文法格式如下:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
document:文檔資料,writeConcern:拋出異常的層級。
(3)刪除文檔
mongodb使用db.col.remove()來刪除文檔,文法結構如下(2.6版本之前):
db.collection.remove(
<query>,
<justOne>
)
2.6版本之後:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
query(可選):刪除的條件,justOne(可選):如果設定為true或1則只刪除一條,writeConcert(可選):拋出異常的層級。
例:db.mycol.remove({'name':'test1'})
(3)查詢文檔
db.COLLECTION_NAME.find()方法以非結構化的方式顯示所有資料,db.COLLECTION_NAME.find().pretty()方法以格式化的方式顯示所有資料。除此之外還有findOne()方法只顯示一個文檔。
mongodb與關係型資料庫where比較:
操作 |
格式 |
範例 |
RDBMS中的類似語句 |
等於 |
{<key>:<value> } |
db.col.find({"by":"菜鳥教程"}).pretty() |
where by = '菜鳥教程' |
小於 |
{<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小於或等於 |
{<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大於 |
{<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大於或等於 |
{<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等於 |
{<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
mongodb AND條件:mongodb的find()方法可以傳入多個鍵(key),每個鍵用逗號,隔開,文法格式如下:
db.col.find({key1:value1, key2:value2}).pretty()
例:db.mycol.find({'name':'tes1','sex':'formale'}).pretty() ,該句的效果類似sql: where name='test1' and sex='formale',
mongodb OR條件:MongoDB OR 條件陳述式使用了關鍵字 $or,文法格式如下:
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
更多MongoDB相關教程見以下內容:
CentOS 編譯安裝 MongoDB與mongoDB的php擴充
CentOS 6 使用 yum 安裝MongoDB及伺服器端配置
Ubuntu 13.04下安裝MongoDB2.4.3
MongoDB入門必讀(概念與實戰並重)
Ubunu 14.04下MongoDB的安裝指南
《MongoDB 權威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
Nagios監控MongoDB分區叢集服務實戰
基於CentOS 6.5作業系統搭建MongoDB服務
MongoDB 的詳細介紹:請點這裡
MongoDB 的:請點這裡
本文永久更新連結地址: