一、簡介 MongoDB 是由C++語言編寫的,是一個基於分散式文件存儲的開源資料庫系統。MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。欄位值可以包含
一、簡介
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。用於創建文檔的 ID。 |
Binary Data | 二進位數據。用於存儲二進位數據。 |
Code | 代碼類型。用於在文檔中存儲 JavaScript 代碼。 |
Regular expression | 正則表達式類型。用於存儲正則表達式。 |
二、操作
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()