1. 程式人生 > >mongodb基礎及常用命令

mongodb基礎及常用命令

概念

  1. 文件

    文件是mongodb中的最核心的概念,是其核心單元,我們可以將文件類比成關係型資料庫中的每一行資料。多個鍵及其關聯的值有序的放置在一起就是文件。
    

例: json {“name":"mengxiangyue","sex":"nan"}

2.集合

集合就是一組文件的組合。如果將文件類比成資料庫中的行,那麼集合就可以類比成資料庫的表。

例:

{"name":"mengxiangyue"}  
{"Name":"mengxiangyue","sex":"nan"}  

3.資料庫

在mongodb中的資料庫是多個集合的組合。同樣一個mongodb中可以建立多個數據庫,這些資料庫也是相互獨立的,也可以獨立進行使用者驗證。
在給資料庫起名的時候有幾個是保留的admin、local、config。這幾個資料庫是mongodb的保留資料庫。
  • admin資料庫,是一個root資料庫,在這個資料庫中新增使用者,該使用者將繼承所有的資料庫的許可權,以後講許可權的時候會用到。
  • local資料庫,這個資料庫不會被複制,只儲存本地伺服器才能訪問的資料庫。以後再分片的時候會降到。
  • config資料庫用於儲存分片的相關資訊

###命令

  • 啟動mongodb: mongod -dbpath D:\mongodb\data
  • 啟動之後輸入mongo後對以下命令(方法)支援
    • use

      • use ‘資料庫名稱’:建立資料庫如:use mongodb則建立了一個名稱為mongodb的資料庫
      • use mongoTest: 切換到名稱為mongoTest
        的資料庫目錄下
    • show

      • show dbs: 顯示資料庫列表(只能顯示出有資料的資料庫)
      • show collections:顯示當前資料庫中的集合
      • show users: 顯示使用者
    • db

      • db.foo.help(): 顯示資料庫操作命令,foo指的是當前資料庫下
      • db.foo.find({a: 1}): 對於當前資料庫中的foo集合進行查詢,條件為a值為1的列表
      • db.dropDatabase(): 刪除當前當前資料庫(刪除完成後,使用show db檢視是否刪除成功)
      • db.COLLENTION_NAME.drop(): 刪除集合
      • db.COLLECTION_NAME.insert(document)
        : 向COLLECTION_NAME集合中插入文件document,如果沒有COLLECTION_NAME則會自動建立一個COLLECTION_NAME集合
      • db.COLLENTION_NAME.update(): 更新已存在的文件
      db.COLLENTION_NAME.update(
          <query>, //update的查詢條件,
          <update>, //update的物件和一些更新的操作符(如$,$inc...)等
          {
              upsert: <bollean>, //可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入
              multi: <boolean>, //可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新。
              writeConcern: <document>//可選,丟擲異常的級別。
          }
      );
      
      
      例:
      db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
      
      • db.COLLECTION_NAME.find().pretty(): 查詢當前表的所有資料
      • db.COLLECTION_NAME.save():通過傳入的文件替換已有的文件
      db.COLLECTION_NAME.save(    
      	<document>,      //文件資料
      	{       
      		writeConcern: <document> //可選,丟擲異常的級別。
      	}  
      )
      
      例:
      db.col.save({_id:ObjectId("5bd6a54701f73bf3d145881e"),'title':'test save'})將5bd6a54701f73bf3d145881e的文件替換為title:'test save'
      
      • db.COLLECTION_NAME.remove(): 移除集合中的資料
      db.COLLENTION_NAME.remove(     
      	<query>,     //(可選)刪除的文件的條件。
      	{       
      		justOne: <boolean>, //(可選)如果設為 true 或 1,則只刪除一個文件。
      		writeConcern: <document> //(可選)丟擲異常的級別。
      	} 
      )
      
      • db.COLLECTION_NAME.aggregate():通過一些聚合表示式,計算一些值,比如求和,平均值等。
      • db.COLLECTION_NAME.mapReduce(): Map-Reduce是一種計算模型,簡單的說就是將大批量的工作(資料)分解(MAP)執行,然後再將結果合併成最終結果(REDUCE)。
      db.COLLENTION_NAME.mapReduce(
         function() {emit(key,value);},  //map 函式, 對映函式 (生成鍵值對序列,作為 reduce 函式引數
         function(key,values) {return reduceFunction},   //統計函式,reduce函式的任務就是將key-values變成key-value,也就是把values陣列變成一個單一的值value。。
         {
            out: collection, //統計結果存放集合
            query: document, //一個篩選條件,只有滿足條件的文件才會呼叫map函式。
            sort: document, //和limit結合的sort排序引數(也是在發往map函式前給文件排序),可以優化分組機制
            limit: number //發往map函式的文件數量的上限(要是沒有limit,單獨使用sort的用處不大)
         }
      )
      
      • db.COLLECTION_NAME.ensureIndex():建立索引 在這裡插入圖片描述

聚合

MongoDB中聚合(aggregate)主要用於處理資料(諸如統計平均值,求和等),並返回計算後的資料結果
(詳情參考地址:[http://www.mongodb.org.cn/tutorial/19.html][2])

管道

MongoDB的聚合管道將MongoDB文件在一個管道處理完畢後將結果傳遞給下一個管道處理。管道操作是可以重複的
$project:修改輸入文件的結構。可以用來重新命名、增加或刪除域,也可以用於建立計算結果以及巢狀文件。
$match:用於過濾資料,只輸出符合條件的文件。$match使用MongoDB的標準查詢操作。
$limit:用來限制MongoDB聚合管道返回的文件數。
$skip:在聚合管道中跳過指定數量的文件,並返回餘下的文件。
$unwind:將文件中的某一個數組型別欄位拆分成多條,每條包含陣列中的一個值。
$group:將集合中的文件分組,可用於統計結果。
$sort:將輸入文件排序後輸出。
$geoNear:輸出接近某一地理位置的有序文件。

索引

索引是特殊的資料結構,索引儲存在一個易於遍歷讀取的資料集合中,索引是對資料庫表中一列或多列的值進行排序的一種結構。
好處: 索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB在讀取資料時必須掃描集合中的每個檔案並選取那些符合查詢條件的記錄。