MongoDB基本操作命令

一、基礎(chǔ)

1、增

# 創(chuàng)建庫  ps:use的話需要插入數(shù)據(jù)才能顯示的喲!
> use msg

# 查看當(dāng)前使用的庫
> db
# 創(chuàng)建集合
> use msg
> db.createCollection("user")
> show tables

# 插入數(shù)據(jù)
> db.user.insert({"name":"mongo"})

2、刪

# 刪除庫
> use msg
> db.dropDatabase()

# 刪除集合
> use msg
> db.user.drop()

# 刪除整個集合中的所有數(shù)據(jù)
> db.test.remove()
# 刪除集合中符合過濾條件的數(shù)據(jù)
> db.test.remove({name:/aws/})
# 刪除符合條件的一條記錄
> db.test.remove({name:/aws/},1)

3、查

# 查詢數(shù)據(jù)庫
> use msg
# 查看數(shù)據(jù)庫數(shù)據(jù)詳情
> db.stats()

# 查詢集合
> show tables
# 重命名集合
> db.user.renameCollection("USER")
# 查看集合數(shù)據(jù)詳情
> db.user.stats()
# 查看集合所有數(shù)據(jù)
> db.user.find()
# 格式化輸出
> db.user.find().pretty()
# 查看一條數(shù)據(jù)
> db.user.findOne()
# 查看匹配數(shù)據(jù)
> db.user.find({"name":"mongo"})
# 查詢大于某個數(shù)值數(shù)據(jù)
> db.user.find({salary:{$gt:7000}})
# 查看名稱中包含‘a(chǎn)’的數(shù)據(jù)
> db.user.find({name:/a/})
# 查詢name以W打頭的數(shù)據(jù)
> db.user.find({name:/^W/})

# 多條件“與”
# 查詢age小于30,salary大于6000的數(shù)據(jù)
> db.user.find({age:{$lt:30},salary:{$gt:6000}})

# 多條件“或”
# 查詢age小于25,或者salary大于10000的記錄
> db.user.find({$or:[{salary:{$gt:10000}},{age:{$lt:25}}]})

# 查詢記錄中的指定列
> db.user.find({},{name:1,age:1,salary:1,sex_orientation:true})

# 查詢指定字段的數(shù)據(jù),并去重
> db.user.distinct('gender')

# 指定結(jié)果集返回條目
> db.user.find().limit(2)

# 查詢第一條以外的數(shù)據(jù)
> db.user.find().skip(1)

# 對結(jié)果集排序
# 升序
> db.user.find().sort({salary:1})
# 將序
> db.user.find().sort({salary:-1})

# 統(tǒng)計記錄數(shù)量
> db.user.find().count()

4、改

# 修改數(shù)據(jù)
> db.user.update({"name":"mongo"},{$set:{"name":"mongos"}})
# 修改多條相同文檔
> db.user.update({"name":"mongo"},{$set:{"name":"mongos"}},{multi:true})
# 只更新第一條記錄:
> db.user.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
# 全部更新:
> db.user.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
# 只添加第一條:
> db.user.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
# 全部添加進去:
> db.user.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
# 全部更新:
> db.user.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
# 只更新第一條記錄:
> db.user.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

# 更新符合過濾條件的信息
> db.user.update({name:'Gal Gadot'},{$set:{age:23}},false,true) 
# 添加新的字段
> db.user.update({name:'Mikie Hara'},{$set:{interest:"CBA"}},false,true)
# 使用函數(shù) $inc
> db.user.update({gender:'female'},{$inc:{salary:50}},false,true)
# 原
{ "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female","interest" : "CBA", "age" : 26, "salary" : 7000 }
# 現(xiàn)
{ "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female","interest" : "CBA", "age" : 26, "salary" : 7050 }

二、集合操作

方法名 描述
db.collection.aggregate() 聚合,主要用于處理數(shù)據(jù)(諸如統(tǒng)計平均值,求和等),并返回計算后的數(shù)據(jù)結(jié)果
db.collection.bulkWrite() 批量寫入
db.collection.createIndex() 創(chuàng)建一個集合索引
db.collection.count() 返回集合總數(shù)或匹配查詢的結(jié)果集總數(shù)
db.collection.deleteOne() 刪除集合中的一個文檔
db.collection.deleteMany() 刪除集合中的多個文檔
db.collection.dataSize() 返回集合的大小
db.collection.distinct() 返回具有指定字段不同值的文檔(去除指定字段的重復(fù)數(shù)據(jù))
db.collection.dropIndex() 刪除一個集合中的指定索引
db.collection.dropIndexes() 刪除一個集合中的所有索引
db.collection.drop() 刪除當(dāng)前數(shù)據(jù)庫中的collection集合
db.collection.explain() 返回各種方法的查詢執(zhí)行信息
db.collection.findOne() 查詢單條數(shù)據(jù)
db.collection.findOneAndReplace() 查詢單條數(shù)據(jù)并替換
db.collection.findOneAndDelete() 查詢單條數(shù)據(jù)并刪除
db.collection.findOneAndUpdate() 查詢單條數(shù)據(jù)并更新
db.collection.find() 查詢集合,無參數(shù)則查詢所有,并返回一個游標(biāo)對象
db.collection.findAndModify() 查詢并修改
db.collection.getIndexes() 返回當(dāng)前集合的所有索引數(shù)組
db.collection.group() 提供簡單的數(shù)據(jù)聚合功能
db.collection.isCapped() 判斷集合是否為定容量
db.collection.insert() 在當(dāng)前集合插入一條或多條數(shù)據(jù)(或叫文檔)
db.collection.insertMany() 在當(dāng)前集合插入多條數(shù)據(jù)
db.collection.insertOne() 在當(dāng)前集合插入一條數(shù)據(jù)
db.collection.reIndex() 重建當(dāng)前集合的所有索引
db.collection.renameCollection() 重命名集合名稱
db.collection.replaceOne() 替換集合中的一個文檔(一條數(shù)據(jù))
db.collection.remove() 從當(dāng)前集合刪除數(shù)據(jù)
db.collection.save() 已插入數(shù)據(jù)更新
db.collection.stats() 返回當(dāng)前集合的狀態(tài)
db.collection.storageSize() 返回當(dāng)前集合已使用的空間大小
db.collection.totalSize() 返回當(dāng)前集合的總占用空間,包括所有文件和所有索引
db.collection.totalIndexSize() 返回當(dāng)前集合所有的索引所占用的空間大小
db.collection.updateMany() 修改集合中的多條數(shù)據(jù)
db.collection.update() 修改集合中的數(shù)據(jù)
db.collection.updateOne() 修改集合中的一條數(shù)據(jù)
db.collection.validate() 執(zhí)行對集合驗證操作

三、副本集操作

方法名 描述
rs.initiate()
rs.addArb() 添加仲裁
rs.help() 幫助
rs.printReplicationInfo() 查看到副本集操作日志
rs.remove() 減少副本集節(jié)點
rs.freeze() “凍結(jié)”mongodb實例
rs.status()/sh.status() 查看副本集狀態(tài)
db.printSlaveReplicationInfo 查看復(fù)制集的同步狀態(tài)
rs.add() 增加副本集節(jié)點
rs.stepDown() 將當(dāng)前主庫“降級”
rs.slaveOk()
rs.conf()
rs.syncFrom()
rs.reconfig()

四、用戶管理

方法名 描述
db.getUsers() 獲取所有用戶
db.dropAllUsers() 刪除所有用戶
db.updateUser() 更新用戶
db.createUser() 創(chuàng)建用戶
db.revokeRolesFromUser() 取消授權(quán)
db.removeUser() 刪除用戶
db.grantRolesToUser() 授權(quán)
db.getUser() 獲取用戶
db.changeUserPassword() 更改用戶密碼
db.auth() 數(shù)據(jù)庫認(rèn)證、安全模式

五、索引

1、新增索引

# 單鍵索引
> db.集合.createIndex({"name":1})
# 倒序索引
> db.集合.createIndex({"name":-1})
# 唯一索引
> db.集合.createIndex({"name":1},{"unique":true})
# 后臺建索引
> db.集合.createIndex({"name":1},{background:1})
# 復(fù)合索引
> db.集合.createIndex({"name":1,"age":1})

2、查看索引

# 查看數(shù)據(jù)庫所有索引
> db.system.indexes.find()
# 查看集合索引
> db.集合.getIndexes()
> db.集合.getIndexKeys()
# 查看索引大小
> db.集合.totalIndexSize()

3、刪除索引

# 刪除單個索引
> db.集合.dropIndex("name_1")
# 刪除所有索引
> db.集合.dropIndexes()

4、重建索引

> db.集合.reIndex({"name":1})

六、副本集

1、基礎(chǔ)操作

# 查看集群狀態(tài)
> rs.status()
# 查看配置
> rs.config()
# 允許在從節(jié)點查詢操作
> rs.slaveOK()
# 查詢是否主節(jié)點
> rs.isMaster()

2、成員管理

# 添加成員
> rs.add("ip:port")
# 添加仲裁節(jié)點
> rs.addArb("ip:port")
# 刪除成員
> rs.remove("ip:port")
# 重置配置
> rs.reconfig()

3、主從管理

# 降級
> rs.stepDown(time)
# 阻止選舉
> rs.freeze(time)
# 主從延遲狀態(tài)
# 主
> db.printReplicationInfo()
# 從
> db.printSlaveReplicationInfo()

七、分片

1、基礎(chǔ)操作

# 查看集群狀態(tài)
mongos> sh.status()
# 列出所有分片
mongos> db.runCommand({ listshards : 1 })
# 添加分片
mongos> sh.addShard("shard1/192.168.200.11:40000")
# 移除分片
mongos> db.runCommand({"removeShard":"shard1"})
# 如果是主分片,需要先把對應(yīng)數(shù)據(jù)庫移動到其他分片,再刪除,執(zhí)行多遍查看是否遷移完成。
mongos> db.runCommand( { movePrimary: "msg", to: "shard2" })
# 移除完需要刷新緩存
mongos> db.adminCommand({"flushRouterConfig":1})

2、平衡器

# 平衡器
# 開啟平衡器
mongos> sh.startBalancer()
# 停止平衡器
mongos> sh.stopBalancer()             # 停止平衡器
or
mongos> sh.setBalancerState(false)
# 獲取平衡器狀態(tài)
mongos> sh.getBalancerState()
# 驗證禁用后有沒有正在遷移的塊
mongos> sh.isBalancerRunning()

3、開啟分片

mongos> use admin
# 開啟庫分片
mongos> sh.enableSharding("dba")                
或
mongos> db.runCommand({enablesharding:"dba"})
# 開啟集合分片
mongos> sh.shardCollection("庫.集合",{"name":1})
或
mongos> db.runCommand({shardcollection:"庫.集合",key:{"name":1}})
mongos> sh.status()
# 查看集合分布情況
mongos> db.集合.stats()

4、數(shù)據(jù)塊

# 查看塊大小
mongos> use config
mongos> db.settings.find()
# 修改塊大小
mongos> db.settings.save({"_id":"chunksize","value":32})

手動遷移塊

# 需要先關(guān)閉平衡器喲
mongos> use config
查詢塊
mongos> db.chunks.find().pretty()
#手動拆分
mongos> sh.splitAt("庫.集合",{"groupId":"500000001","_id":"6569514481477484544"})
#手動遷移分片
mongos> sh.moveChunk("庫.集合",{"name" : "wPeFnJEvendSTbH"},"其他分片")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容