Mongodb 的基本使用

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 的角色   一、數據庫角色   二、集羣角色   三、數據備份角色   四、其餘特殊權限

相關文章
相關標籤/搜索