1. 程式人生 > >MongoDB常用的命令列操作

MongoDB常用的命令列操作

一、啟動mongo服務

執行指令碼./mongod 可以通過-dbpath來指定資料庫路徑
這裡寫圖片描述
從日誌上可以看到mongo服務的預設配置資訊,還可一看到每一個連線到mongo服務的客戶端的資訊,已經客戶端操作資訊

二、連線mongo服務

1、連線本機mongo服務
執行指令碼./mongo
這裡寫圖片描述

2、連線遠端的mongo服務
執行shell命令./mongo mongodb://<user>:<paswword>@<serverIp>:<serverPort>/[db]?[options]
注意:不指定db預設連線到test資料庫
option是可選引數,格式為:safe=true;w=2;wtimeoutMS=2000,多個選項之間用‘;‘連線

三、mongo操作之資料庫

1、切換或者建立資料庫
執行命令use db_name,如果db_name不存在、則建立一個數據庫,存在則直接連線
這裡寫圖片描述
2、檢視所有的資料庫
執行命令show dbs檢視所有資料庫
這裡寫圖片描述
注意:沒有顯示剛建立的資料庫是因為資料庫中沒有資料

admin: 從許可權的角度來看,這是”root”資料庫。要是將一個使用者新增到這個資料庫,這個使用者自動繼承所有資料庫的許可權。一些特定的伺服器端命令也只能從這個資料庫執行,比如列出所有的資料庫或者關閉伺服器
local: 這個資料永遠不會被複制,可以用來儲存限於本地單臺伺服器的任意集合
config:

當Mongo用於分片設定時,config資料庫在內部使用,用於儲存分片的相關資訊
3、檢視當前資料庫物件
執行命令db檢視當前資料庫物件或集合,預設test
這裡寫圖片描述
4、刪除當前資料庫
執行命令db.dropDatabase
這裡寫圖片描述

四、mongo操作之資料集和文件

1、建立資料集
db.createCollection(<name>, [options])
name:資料集引數
options:為可選項,如下表

欄位 型別 描述
capped 布林 如果為 true,則建立固定集合。固定集合是指有著固定大小的集合,當達到最大值時,它會自動覆蓋最早的文件。當該值為 true 時,必須指定 size 引數
size 數值 為固定集合指定一個最大值(以位元組計)。如果 capped 為 true,也需要指定該欄位。
max 數值 指定固定集合中包含文件的最大數量

建立一個集合log,固定集合大小為5242880KB,最多放500個
這裡寫圖片描述

2、檢視所有的資料集
show collections
這裡寫圖片描述
3、資料集中插入文件
db.<name>.insert(<document>)同方法db.<name>.insertOne(<document>)
下面插入一條資料
這裡寫圖片描述
下面插入多條資料,同方法db.<log>.insertMany(<document>)
這裡寫圖片描述
4、查詢資料集
4.1 基本操作
db.<name>.find([query])
這裡寫圖片描述
query相當於是查詢條件,為空則查詢所有文件,常用的條件如sql語句中的=、>、<,in,like,and,or
4.2 其他操作
db.<name>.find([query]).pretty()格式化查詢結果
db.<name>.find([query]).limit(<number>)限制查詢結果條數
db.<name>.find([query]).skip(<number>)跳過查詢結果條數
db.<name>.find([query]).sort({<key>:<value>)對查詢結果按排序,value為1對key升序、為-1對key降序
pretty、limit、skip、sort可以一起使用,執行順序為skip->limit->sort->pretty
5、刪除資料集
db.<name>.drop()
這裡寫圖片描述
6、更新文件

db.<name>.update(<query>,<update>,
{upsert: <boolean>,multi: <boolean>,writeConcern: <document>}
)

query : update的查詢條件,類似sql update查詢內where後面的。
update : update的物件和一些更新的操作符(如 , inc…)等,也可以理解為sql update查詢內set後面的
upsert : 可選,這個引數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。
multi : 可選,mongodb 預設是false,只更新找到的第一條記錄,如果這個引數為true,就把按條件查出來多條記錄全部更新。
writeConcern :可選,丟擲異常的級別。

建議用新版本的去操作

db.collection.updateOne(<query>, <update>, <options>)
db.collection.updateMany(<query>, <update>, <options>)
db.collection.replaceOne(<query>, <replacement>, <options>)

下面的操作將所有name為service1.log的記錄全部修改為service3.log
這裡寫圖片描述

writeConcern可選引數型別

異常級別 說明
WriteConcern.NONE 沒有異常丟擲
WriteConcern.NORMAL 僅丟擲網路錯誤異常,沒有伺服器錯誤異常
WriteConcern.SAFE 丟擲網路錯誤異常、伺服器錯誤異常;並等待伺服器完成寫操作。
WriteConcern.MAJORITY: 丟擲網路錯誤異常、伺服器錯誤異常;並等待一個主伺服器完成寫操作。
WriteConcern.FSYNC_SAFE: 丟擲網路錯誤異常、伺服器錯誤異常;寫操作等待伺服器將資料重新整理到磁碟。
WriteConcern.JOURNAL_SAFE 丟擲網路錯誤異常、伺服器錯誤異常;寫操作等待伺服器提交到磁碟的日誌檔案。
WriteConcern.REPLICAS_SAFE 丟擲網路錯誤異常、伺服器錯誤異常;等待至少2臺伺服器完成寫操作。

7、刪除文件

db.collection.deleteMany(<query>)
db.collection.deleteOne(<query>)
<query>為空刪除所有文件

五、文件索引

預設情況下的索引是 _id

db.<name>.createIndex( <key>:<index>..., [options] )

key為索引,index為1時按升序建立索引,為-1按降序建立索引,key可以有多個。
options為索引型別引數,可選引數如下表

引數名 型別 描述
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.