學習筆記_MongoDB使用

http://www.runoob.com/MongoDB/mongodb-tutorial.html

 

啓動MongoDB,打開D:\Install_Mongodb\bin\mongod.exe

或者

用命令行進入D:\Install_Mongodb\bin輸入mongod.exe --dbpath d:\data\db

安裝後,可以用MongoBooster、MongoChief等工具管理查詢。

也可以用命令行,打開安裝目錄的bin文件夾下,如D:\Install_Mongodb\bin

,然後輸入mongo,就可以進入其shell命令行。

改成全局使用mongo命令的話,需要到環境變量配置的path中加入mongdb安裝地址的bin,即可全局使用命令。

 

命令行是區分大小寫的。

 

使用用戶名和密碼連接到MongoDB服務器,你必須使用 'username:password@hostname/dbname' 格式,'username'爲用戶名,'password'爲密碼。

如mongodb://admin:123456@localhost/test

 

 

use DATABASE_NAME     //創建數據庫

db                                          //顯示當前數據庫

show dbs                            //顯示所有數據庫

show collections    //顯示數據庫中的集合,相當於表格

db.runCommand({"dropDatabase":1})    刪除當前數據庫

 

mongodump -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 -o 文件存在路徑 //導出數據庫所有數據,如:mongodump-h 127.0.0.1 -o /home/zhangy/mongodb/ connected to: 127.0.0.1

//導出指定數據庫

mongodump -h 192.168.1.108 -d 數據庫名-o/home/zhangy/mongodb/ connected to: 192.168.1.108

//還原數據庫,即導入

mongorestore -h IP --port 端口 -u 用戶名 -p 密碼 -d 數據庫 --drop 文件存在路徑

 

db.runoob.insert({"name":"菜鳥教程"})

db.dropDatabase()          //刪除當前數據庫

db.collection.drop()         //刪除集合

db.collection.remove({key1:value1,key2:value2}) //刪除

db.collection.remove({})           //刪除所有

db.collection.find({key1:value1,key2:value2})         //查詢

db.collection.find()                     //查詢所有

db.col.find().pretty()                  //格式化查詢結果

// OR語句查詢

db.col.find(

   {

     $or: [

              {key1: value1}, {key2:value2}

     ]

   }

).pretty()

// AND和OR聯合使用

db.col.find({"likes": {$gt:50},$or: [{"by": "菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()

(>) 大於 - $gt

(<) 小於 - $lt

(>=) 大於等於 - $gte

(<= ) 小於等於 - $lte

db.col.find({likes : {$lt :200, $gt :100}})

db.col.find().limit(NUMBER)    //limit限制讀取條數

db.col.find().limit(NUMBER).skip(NUMBER)   //skip跳過條數

db.col.find().sort({KEY:1})         //排序,1爲升序,-1爲降序

db.col.ensureIndex({KEY:1})    //創建索引,1爲升序,-1爲降序

db.values.ensureIndex({open: 1, close: 1},{background: true})      //後臺創建索引

ensureIndex接受參數:background,unique,name,dropDups,sparse,expireAfterSeconds,v,weights,default_language,language_override

db.col.aggregate(AGGREGATE_OPERATION) //用於處理數據(諸如統計平均值,求和等),並返回計算後的數據結果。有點類似sql語句中的 count(*)。

聚合:$sum,$avg,$min,$max,$push,$addToSe,$first,$last,$project,$match,$limit,$skip,$unwind,$group,$sort,$geoNear

mongod --port "PORT" --dbpath"YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"               //關閉正在運行的MongoDB服務器。實例如mongod--port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0

以上實例會啓動一個名爲rs0的MongoDB實例,其端口號爲27017。複製創建副本,防止宕機後不可用。

rs.initiate()       //啓動一個新的副本集。

rs.conf()            //查看副本集的配置

rs.status()       //查看副本集狀態

rs.add(HOST_NAME:PORT)              //添加副本集的成員。如rs.add("mongod1.NET:27017")

db.isMaster()  //判斷當前運行的Mongo服務是否爲主節點

 

MongoDB分片(集羣)

 

mongodump -h dbhost -d dbname -odbdirectory            //備份

-h:

MongDB所在服務器地址,例如:127.0.0.1,當然也可以指定端口號:127.0.0.1:27017

-d:

需要備份的數據庫實例,例如:test

-o:

備份的數據存放位置,例如:c:\data\dump,當然該目錄需要提前建立,在備份完成後,系統自動在dump目錄下建立一個test目錄,這個目錄裏面存放該數據庫實例的備份數據。

 

mongorestore -h dbhost -d dbname--directoryperdb dbdirectory //恢復備份和數據

-h:

MongoDB所在服務器地址

-d:

需要恢復的數據庫實例,例如:test,當然這個名稱也可以和備份時候的不一樣,比如test2

--directoryperdb:

備份數據所在位置,例如:c:\data\dump\test,這裏爲什麼要多加一個test,而不是備份時候的dump,讀者自己查看提示吧!

--drop:

恢復的時候,先刪除當前數據,然後恢復備份的數據。就是說,恢復後,備份後添加修改的數據都會被刪除,慎用哦!

接下來我們執行以下命令:

mongorestore

 

mongostat       //mongodb自帶的狀態檢測工具

 

官方的MongoDB的文檔中說明,覆蓋查詢是以下的查詢:

所有的查詢字段是索引的一部分

所有的查詢返回字段在同一個索引中

由於所有出現在查詢中的字段是索引的一部分, MongoDB 無需在整個數據文檔中檢索匹配查詢條件和返回使用相同索引的查詢結果。

因爲索引存在於RAM中,從索引中獲取數據比通過掃描文檔讀取數據要快得多。

 

MongoDB 查詢分析可以確保我們建議的索引是否有效,是查詢語句性能分析的重要工具。

MongoDB 查詢分析常用函數有:explain() 和 hint()。

 

mongodb不支持事務,所以,在你的項目中應用時,要注意這點。無論什麼設計,都不要要求mongodb保證數據的完整性。

但是mongodb提供了許多原子操作,比如文檔的保存,修改,刪除等,都是原子操作。

 

MongoDB 固定集合(CappedCollections)是性能出色且有着固定大小的集合,對於大小固定,我們可以想象其就像一個環形隊列,當集合空間用完後,再插入的元素就會覆蓋最初始的頭部的元素!

 

MongoDB 沒有像 SQL 一樣有自動增長的功能,MongoDB 的 _id 是系統自動生成的12字節唯一標識。

但在某些情況下,我們可能需要實現 ObjectId 自動增長功能。

由於 MongoDB 沒有實現這個功能,我們可以通過編程的方式來實現,以下我們將在 counters 集合中實現_id字段自動增長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章