具體使用參考:http://www.runoob.com/mongodb/mongodb-tutorial.htmlhtml
1、簡介mysql
MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。正則表達式
在高負載的狀況下,添加更多的節點,能夠保證服務器性能。sql
MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。mongodb
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。數據庫
主要特色編程
安裝:json
下載地址:https://www.mongodb.com/download-center#community,直接安裝到指定路徑就行數組
新建一個文件夾,用於存放數據,例如c:/data/db,而後使用下面命令啓動服務,鏈接這個服務的數據庫都存放在該路徑中服務器
啓動服務(在安裝軟件的/bin目錄中):mongod --dbpath c:\data\db
鏈接服務(在安裝軟件的/bin目錄中):mongo
經常使用命令(和Mysql十分相似)
顯示全部數據庫(數據庫爲空不顯示):show dbs
建立和鏈接哪一個數據庫是同樣的命令:use 數據庫名稱
刪除數據庫db.數據庫名稱.drop()
數據庫中存放的相似於mysql中的表,Mongodb中叫集合collection
mongodb經常使用操做符
集合的基本命令:(例如集合的名稱是area)
一、查詢:db.area.find()這是查詢全部,相似於myql中的select * from area.
1)條件查詢,例如db.area.find({"name":"張三"},{"sex":"男"}),括號裏面的條件是json格式。默認打逗號是相似於sql語句的and。
or條件:db.area.find({$or: [{key1: value1}, {key2:value2}]})
and條件:db.area.find({$and: [{key1: value1}, {key2:value2}]}),and能夠省略不寫
2)模糊查詢: db.area.find({"areaCode":{"$not" : /.*00$/}}) 、 db.area.find({"areaCode" : /.*00$/})。模糊查詢中的條件使用的是正則表達式。
模糊查詢通常仍是比較快的,只有在特別大的數據中才會很慢,因此儘可能在多條件查詢中使用,其餘條件是索引字段。
二、插入數據:
db.area.insert({"name":"張三","sex":"男"})
三、刪除數據:
db.area.remove({"name":"張三"},{"sex":"男"}),和查詢操做相似
四、修改數據:其中multi:true表示對全部符合條件的進行修改,默認是false
db.pubdata.update({"areaCode":"0000"},{$set:{"areaCode":"000000"}},{multi:true})
索引
索引一般可以極大的提升查詢的效率,若是沒有索引,MongoDB在讀取數據時必須掃描集合中的每一個文件並選取那些符合查詢條件的記錄。
這種掃描全集合的查詢效率是很是低的,特別在處理大量的數據時,查詢能夠要花費幾十秒甚至幾分鐘,這對網站的性能是很是致命的。
索引是特殊的數據結構,索引存儲在一個易於遍歷讀取的數據集合中,索引是對數據庫表中一列或多列的值進行排序的一種結構
MongoDB使用 ensureIndex() 方法來建立索引。
ensureIndex()方法基本語法格式以下所示:
>db.COLLECTION_NAME.ensureIndex({KEY:1})
語法中 Key 值爲你要建立的索引字段,1爲指定按升序建立索引,若是你想按降序來建立索引指定爲-1便可。
>db.col.ensureIndex({"title":1}) >
ensureIndex() 方法中你也能夠設置使用多個字段建立索引(關係型數據庫中稱做複合索引)。
>db.col.ensureIndex({"title":1,"description":-1}) >
ensureIndex() 接收可選參數,可選參數列表以下:
Parameter | Type | Description |
---|---|---|
background | Boolean | 建索引過程會阻塞其它數據庫操做,background可指定之後臺方式建立索引,即增長 "background" 可選參數。 "background" 默認值爲false。 |
unique | Boolean | 創建的索引是否惟一。指定爲true建立惟一索引。默認值爲false. |
name | string | 索引的名稱。若是未指定,MongoDB的經過鏈接索引的字段名和排序順序生成一個索引名稱。 |
dropDups | Boolean | 在創建惟一索引時是否刪除重複記錄,指定 true 建立惟一索引。默認值爲 false. |
sparse | Boolean | 對文檔中不存在的字段數據不啓用索引;這個參數須要特別注意,若是設置爲true的話,在索引字段中不會查詢出不包含對應字段的文檔.。默認值爲 false. |
expireAfterSeconds | integer | 指定一個以秒爲單位的數值,完成 TTL設定,設定集合的生存時間。 |
v | index version | 索引的版本號。默認的索引版本取決於mongod建立索引時運行的版本。 |
weights | document | 索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其餘索引字段的得分權重。 |
default_language | string | 對於文本索引,該參數決定了停用詞及詞幹和詞器的規則的列表。 默認爲英語 |
language_override | string | 對於文本索引,該參數指定了包含在文檔中的字段名,語言覆蓋默認的language,默認值爲 language. |
在後臺建立索引:
db.values.ensureIndex({open: 1, close: 1}, {background: true})
經過在建立索引時加background:true 的選項,讓建立工做在後臺執行
mongodb經常使用操做:
導出/備份數據:mongodump -h localhost -d area_new -o F:\mongodump
建立索引:db.col.ensureIndex({"title":1}) 備註:col是表名稱 括號裏面是字段名,1表示升序
同時建立多個索引,一個一個建索引會影響其餘的索引
db.vaabs_monthly.ensureIndex({"areaCode":1,"indusId":1})
查詢全部索引db.vaabs_monthly.getIndexes()
刪除索引:db.vaabs_monthly.dropIndex("indusId_1")
將csv導入mongodb數據庫:-d 是指定數據庫 -c指定集合mongoimport -d area_new -c gfp_data --type csv --headerline --file E:/mysqloutput/gfp_data.csv