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 的角色   一、数据库角色   二、集群角色   三、数据备份角色   四、其余特殊权限

相关文章
相关标签/搜索