《MongoDB 入門篇》筆記,
安裝與配置手動安裝
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgztar -zxvf mongodb-linux-x86_64-3.0.6.tgzcd mongodb(mv mongodb-linux-x86_64-3.0.6.tgz mongodb)mkdir data log conf #建立配置目錄cd confvim mongod.conf #建立設定檔port=12345dbpath=datalogpath=log/mongodb.logfork=true
自動安裝
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 # 匯入keyecho "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list # 建立一個MongoDB列表sudo apt-get update # 更新sudo apt-get install -y mongodb-org #安裝#記錄檔/var/lib/mongodb/mongd.log
啟動MongoDB
# 手動安裝啟動方式./bin/mongod -f conf/mongod.conf # 啟動Mongodb服務,-f指定設定檔# tail log/mongo.log #此時可以看到正在等待串連./bin/mongo 127.0.0.1:12345/test #串連本機伺服器/連接埠號碼/資料庫# 自動安裝啟動方式pgrep mongo -l # 查看mongodb是否啟動service mongod statusservice mongod startservice mongod stopservice mongod restartmongo
基本使用
mongo -version # 查看版本資訊use admindb.shutdownServer() #退出show dbs #顯示資料庫use test #選擇/建立資料庫db.dropDatabase() #刪除當前資料庫db #顯示當前資料庫db.test_col.insert({x:1}) #插入(建立集合)var_insert = {a:1, b:3}db.test_col.insert(var_insert) #通過變數形式插入db.test_col.insertMany([document1, document2,...]) #多條插入db.test_col.drop() #刪除test_col集合show collections #顯示集合db.test_col.find() #查詢所有資料,id欄位自動產生,可以指定,但不能重複db.test_col.find({y:1}) #查詢指定資料db.test_col.find().count() #計數for(i=3;i<10;i++)db.test_col.insert({x:i}) #支援shell迴圈db.test_col.find().skip(2).limit(3).sort({x:1}) #跳過,限制,排序 db.test_col.update({x:1},{$set:{x:10}}) # 部分更新xdb.test_col.update({y:100}, {y:999}, true) #true表示若{y:100}不存在就插入{y:999}db.test_col.update({x:1}, {$set:{x:2}}, false, true) #多條記錄更新db.test_col.remove({x:2}) #刪除db.test_col.remove({}) #刪除所有資料
索引
四個屬性:name,unique,spare,到期索引
預設name值為key1_value1_key2_value2_…,即key+”_”+value
db.test_col.getIndexes() # 查看索引db.test_col.ensureIndex({x:1,y:1}, {name:"x"}, {unique:true} ) # 設定索引db.test_col.dropIndex({x:1,y:1})db.test_col.dropIndex("x") # 刪除索引db.test_col.insert({x:10, y:1})db.test_col.insert({x:10, y:1}) # 報錯,設定unqiue:true,要求記錄唯一db.test_col.ensureIndex({x:1}, {sparse:true}) #sparse:true,無論記錄是否含有x:1,都給該記錄添加索引db.test_col.find({x:{$exists:true}}) # 找到含x的記錄db.test_col.find({x:{$exists:false}}).hint("x_1") #強制按照"x_1"索引來搜尋
_id索引:集合預設索引,對於每一個插入的資料,Mongodb都會自動產生一條唯一_id欄位
單鍵索引:建立一個單鍵索引db.test_col.ensureIndex({x:1})
多鍵索引:建立一個多鍵索引db.test_col.ensureIndex({x:(1,2)})
複合索引:db.test_col.ensureIndex({x:1, y:2})
到期索引:
db.test_col.ensureIndex({time:1}, {expireAfterSeconds:10})
,db.test_col.insert({time:new date()})
- 到期索引的欄位值必須是指定的時間類型IOSdata或IOSdata數組.
- 一旦索引到期,相應的資料就刪除,即10秒後time:new date()資料被刪除.
- 如果指定了IOSdata數組,安裝最近的時間算起,到期索引不能是複合索引.
全文索引
每一個集合只允許建立一個全文索引
對字串或字串數組建立全文索引
db.test_col.ensure({"article":"text"})db.test_col.find({$"text":{"$search":"aa bb -cc"}})# aa bb之間的空格表示邏輯或,-cc表示不尋找ccdb.test_col.find({$"test":{$"search":"\"aa\" \"bb\"}}) # "aa" "bb"用“”表示邏輯與
函數
function add(r1, r2){ return r1+r2;}
地理位置索引
2D索引的表示方式:[經度,緯度];取值範圍經度[-180,180],緯度[-90,90]
插入時,經度不合法會報錯,但是緯度不合法不會
db.location.ensureIndexes({"w":"2d"}) # 建立2d地理位置索引db.location.find({w:{$near:[1,1]}, $maxDistance:10}}) # near按照距離查詢,尋找距離[1,1],並限定最大距離為10的左右座標位置db.location.find({w:{$geoWithin:{$box:[[0,0],[20,20]]}}}) #geoWithin按照形狀查詢,box[[x0,y0],[x1,y1]]表示一個矩形
-
頂
-
0
-
踩
-
0
查看評論