mongodb使用

具體使用參考:http://www.runoob.com/mongodb/mongodb-tutorial.htmlhtml

1、簡介mysql

MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。正則表達式

在高負載的狀況下,添加更多的節點,能夠保證服務器性能。sql

MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。mongodb

MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。數據庫

 

主要特色編程

  • MongoDB的提供了一個面向文檔存儲,操做起來比較簡單和容易。
  • 你能夠在MongoDB記錄中設置任何屬性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")來實現更快的排序。
  • 你能夠經過本地或者網絡建立數據鏡像,這使得MongoDB有更強的擴展性。
  • 若是負載的增長(須要更多的存儲空間和更強的處理能力) ,它能夠分佈在計算機網絡中的其餘節點上這就是所謂的分片。
  • Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  • MongoDb 使用update()命令能夠實現替換完成的文檔(數據)或者一些指定的數據字段 。
  • Mongodb中的Map/reduce主要是用來對數據進行批量處理和聚合操做。
  • Map和Reduce。Map函數調用emit(key,value)遍歷集合中全部的記錄,將key與value傳給Reduce函數進行處理。
  • Map函數和Reduce函數是使用Javascript編寫的,並能夠經過db.runCommand或mapreduce命令來執行MapReduce操做。
  • GridFS是MongoDB中的一個內置功能,能夠用於存放大量小文件。
  • MongoDB容許在服務端執行腳本,能夠用Javascript編寫某個函數,直接在服務端執行,也能夠把函數的定義存儲在服務端,下次直接調用便可。
  • MongoDB支持各類編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
  • MongoDB安裝簡單。

安裝: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經常使用操做符

  • (>) 大於 - $gt
  • (<) 小於 - $lt
  • (>=) 大於等於 - $gte
  • (<= ) 小於等於 - $lte

  集合的基本命令:(例如集合的名稱是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在讀取數據時必須掃描集合中的每一個文件並選取那些符合查詢條件的記錄。

這種掃描全集合的查詢效率是很是低的,特別在處理大量的數據時,查詢能夠要花費幾十秒甚至幾分鐘,這對網站的性能是很是致命的。

索引是特殊的數據結構,索引存儲在一個易於遍歷讀取的數據集合中,索引是對數據庫表中一列或多列的值進行排序的一種結構


ensureIndex() 方法

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

相關文章
相關標籤/搜索