標籤:自動 統計 設定檔 排列 情況 .so add 正則 shu
mongodbUbuntu
sudo apt-get install mongodb
Mac
brew install mongodb
啟動
直接啟動
sudo mongod
注意事項:啟動失敗
資料庫不存在 建立檔案夾 /data/db
許可權不夠,添加 sudo
啟動參數說明
--port
進行設定預設連接埠
--dbpath
設定資料庫路徑
--config
通過指定設定檔去啟動mongodb
,再設定檔中可以配置預設連接埠、資料庫路徑等等
關閉
直接kill關閉(非常不推薦使用,最好不要使用)
sudo kill -9 進程號
通過進入資料庫中直接關閉
use admindb.shutdownServer()
資料庫顯示資料庫列表
show databases// 或show dbs
顯示當前資料庫
db
進入資料庫
use 資料庫名
建立資料庫
只要插入資料就自動建立資料庫
刪除資料庫
// 前提use db// 刪除資料庫db.dropDatabase()
集合(表)操作建立集合
預設情況下只要插入資料自動建立集合
手動建立集合
db.createCollection(集合名稱)
顯示集合列表
show collections
刪除集合
db.集合名.drop()
資料操作建立
// 插入資料,json串db.my_coll.insert({ "a":"x", "b":{ "q":"a", "p":"b" }, "c":[1,2,3]})// 批量插入data = [ {"test01":"val1"}, {"test02":"val2"}, {"a":{"p":"q"},"b":123}]db.my_coll.insertMany(data)
更新
預設整體更新,如果需要局部更新需要使用 $set
,預設是僅更新一次,如果需要批次更新需要添加第三個參數 multi
// 預設更新是完整更新,也就是替換db.stu.update( // 更新條件 { "name":"郭靖" }, // 更新內容 { "age":88 })// 局部更新db.stu.update( // 更新條件 { "name":"黃蓉" }, // 更新內容 { // 局部更新內容 $set:{ "age":80 } })// 預設情況下是只更新一次,如果需要批次更新,添加第三個參數,multi 設定為True 就是批次更新db.stu.update( // 更新條件 { "age":{$gt:20} }, // 更新內容 { // 局部更新內容 $set:{ "age":36 } }, // 更新方式 { multi:true })
刪除
// 刪除db.stu.remove( // 刪除條件 { "age":36 }, // 如果想僅僅刪一條 { justOne:true })// 清空資料db.stu.remove({})
儲存
// 通過 _id 查詢資料如果存在就更新,如果不存在就插入db.my_test.save({ "_id":1, "a":"b"})
查詢簡單查詢
db.集合名.find()
複雜查詢
// 預設查詢是 並db.stu.find( // 查詢條件 { "hometown":"蒙古", "age":20 })// 比較子($gt,$gte,$lt,$lte,$ne)db.stu.find( // 查詢條件 { "age":{$gt:20} })// 邏輯運算子 $ordb.stu.find( // 查詢條件 { "age":{$gt:20}, $or:[ {"hometown":"蒙古"}, {"gender":false} ] })// 範圍運算子 $in,$nin// 表示在列表中的db.stu.find( // 查詢條件 { "age":{$nin:[18,45]} })// Regexdb.stu.find( // 查詢條件 { "name":/^黃/ })db.stu.find( // 查詢條件 { "name":{$regex:"^黃"} })// 自訂查詢db.stu.find( // 查詢條件 { $where: function(){ // 返回 true 表示符合條件 // this 表示目前記錄 return this.age >= 18 && this.gender == false } })
進階查詢
// limit 和 skip// 注意: 先 skip 再 limit 不管誰先誰後db.stu.find().limit(2)db.stu.find().skip(1)db.stu.find().limit(2).skip(1)db.stu.find().skip(1).limit(2)// 投影 是否顯示資料// 在不同的資料庫版本中 方式不同db.stu.find( // 查詢條件 {}, // 投影方式,顯示資料欄位 { "name":1 })// 排序// 參數1為升序排列// 參數-1為降序排列db.stu.find().sort( { age:-1, hometown:1 })// 統計個數db.stu.find().count()// 去除重複// 第一個參數是去重的欄位// 第二個是查詢條件db.stu.distinct('hometown',{age:{$gt:18}})
mongodb簡單操作