《MongoDB 入門篇》筆記,

來源:互聯網
上載者:User

《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
查看評論

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.