1、cmd鏈接mongodb 服務mongodb
進入mongodb的bin目錄下:[D:\mongodb3.2.5\bin]$ mongo 127.0.0.1:27017數據庫
經常使用查詢:數組
show dbs 查看全部數據庫安全
use dbName 進入當前數據庫網絡
show tables 查看該數據庫下的集合性能
2、curd操做spa
查詢:日誌
1.查所有:db.mydb2_collection.find();orm
2.查詢一條:db.mydb2_collection.findOne();排序
插入:db.mydb2_collection.insert({m:1});
修改:db.mydb_collection.update({x:1},{x:999});
刪除:db.mydb_collection.remove({c:2});
3、索引
優勢:能夠加快與全部相關的查詢速度
缺點:增長磁盤空間,下降寫入性能
索引類型:
id索引:自動建立的
單鍵索引:
多鍵索引:db.mydb2_collection.insert({x:[1,2,3,4,5]});
複合索引:當咱們的查詢條件不知一個的時候,就須要創建複合索引
db.mydb2_collection.ensureIndex({x:1,y:1}); 建立
db.mydb2_collection.find({x:1,y:2}); 使用
過時索引:1.在一段時間後會過時的索引 二、在索引過時後相應的數據會被刪除
使用場景:適合存儲在一些時間後會失效的數據好比用戶登陸信息,存儲的日誌
建立方式:
注意:存儲在過時索引的字段必須是指定時間類型,必須是ISODate或者ISODate數組,不能使用時間戳,不然不能自動刪除。
若是是數組,則按照最小的時間進行刪除
過時索引不是複合索引
刪除時間是不精確的(刪除過程是後臺程序沒60秒執行一次的進程操做的,刪除操做自己也須要時間) 最小時間差60秒
全文索引:對字符串與字符串數組建立全文可搜索的索引
插入數據:db.mydb2_collection.insert({arrticle:"aa bb cc gg hh"});
查詢:db.mydb2_collection.find({$text:{$search:"aa"}});
db.mydb2_collection.find({$text:{$search:"aa bb ee"}}); //多關鍵字 或者 的關係
db.mydb2_collection.find({$text:{$search:"aa bb -cc"}}); //不包含cc
db.mydb2_collection.find({$text:{$search:"\"aa\"\"bb\"\"cc\""}});//多關鍵字 且的關係
全文索引類似度:
查詢:db.mydb2_collection.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}});
db.mydb2_collection.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}//排序
索引的屬性:
name屬性
指定名字建立索引:db.mydb2_collection.ensureIndex({c:1,y:1},{name:"normal_index"});
根據名字刪除索引:db.mydb2_collection.dropIndex("normal_index");
unique索引的惟一性:
db.mydb2_collection.ensureIndex({m:1,n:1},{unique:true})
做用:在作添加時若是存在就不插入,不然插入
稀疏性:sparse
建立:db.mydb2_collection.ensureIndex({m:1},{sparse:true});
查詢強制使用索引:db.mydb2_collection.find({m:{$exists:false}}).hint("m_1");
地理位置索引:
2d:
建立2d平面索引: db.mydb_location.ensureIndex({w:"2d"});
位置表示方式:經緯度[經度,緯度]
取值範圍:經度:[-180,180] 緯度[-90,90]
插入:db.mydb_location.insert({w:[2,1]});
near查詢:
查查與[1,1]最近的點:db.mydb_location.find({w:{$near:[1,1]}});
查詢與[1,1]相近 10的點:db.mydb_location.find({w:{$near:[1,1],$maxDistance:10}});
形狀查詢 $geoWithin:
矩形 $box: db.mydb_location.find({w:{$geoWithin:{$box:[[0,0],[2,2]]}}});
圓形$center:db.mydb_location.find({w:{$geoWithin:{$center:[[0,0],2]}}});
多邊形$polygon:db.mydb_location.find({w:{$geoWithin:{$polygon:[[0,0],[2,2],[0,2]]}}});
geoNear查詢:
db.runCommand({geoNear:"mydb_location",near:[1,2],maxDistance:3,num:1});
2dsphere索引球面地理位置:
4、安全機制
MongoDB安全機制:
1.物理分離(最安全):不現實
2.網絡隔離
3.防火牆的隔離:給固定的ip訪問權限
4.用戶名和密碼
建立用戶
db.createUser({user:"jalja",pwd:"jalja",roles:[{role:"userAdmin",db:"mydb"},{role:"read",db:"test"}]});
權限:read、readWrite、dbAdmin、dbOwner、userAdmin
在mongo.conf 中添加 auth =true 開啓權限認證
使用 用戶名密碼鏈接:mongo 127.0.0.1:27017 -u jalja -p jalja
mongodb 的角色 一、數據庫角色 二、集羣角色 三、數據備份角色 四、其餘特殊權限