Mongodb学习笔记

第一部分:mongodb服务启动与链接

 

下载二进制文件放置在linux目录下

 

解压二进制文件,将文件夹重命名下,如,mongodb3.0.2,进入目录进入bin下,我们可以看到如下程序,说几个重点的:

 

 

返回上层目录,创建一个咱们自己的mongodb的文件夹,目录如下:

 

4个文件夹分别代表了:

Bin 命令文件夹   data 数据库相关文件夹

Conf 配置文件夹  log 日志文件夹

 

mongo3.0.2中的bin目录下的mongod服务cpmaizuo-mongobin目录下待启动,此时我们进入conf文件夹下,vi mongod.conf文件,写入以下内容:

 

Port 服务启动端口 dbpath数据库所在文件夹 logpath 日志存放位置 fork只在linux下有用 意味后台进城启动

 

配置完成后,进入maizuo-mongo目录,使用命令./bin/mongod -f conf/mongod.conf 启动mongodb服务,输入如下内容表明服务启动成功。

 

 

 

下面,我们需要将源文件下的mongo命令cp到我们的maizuo-mongobin目录下,然后使用客户端连接mongodb服务,在这之前我们可以通过./bin/mongo --help命令看一下连接的命令:

 

由于我们当前未配置用户名和密码 所以暂时不用关心[options]里的内容,使用命令

./bin/mongo 127.0.0.1:12345连接mongodb

 

我们发现它默认让我们连接的是test数据库 显示如上内容并出现>箭头,表示成功。

 

可以使用db.shutdownServer()关闭mongodb服务。

 

 

 

 

 

第二部分:数据库和表相关操作

1、数据库相关

Db 显示当前数据库

Show dbs 显示所有数据库

Use maizuo 切换到maizuo数据库 maizuo不存在 会在合适的时机自动创建

Show collections 显示所有表名(在mongo里称之为集合)

 

 

2、插入

Db.maizuo_users.insert({name:’lvpeng’}) 只能插入一条

For(int i=1;i<6;i++) Db.maizuo_users.insert({name:i}) 插入多条

 

 

3、查询

db.maizuo_users.count() 查询表中有多少条数据

Db.maizuo_users.find() 查询全部数据

Db.maizuo_users.find({name:’lvpeng’}) 根据条件查询数据 支持中文

 

查询出来的数据 自带了_id属性 不过我们可以覆盖这个属性

 

Db.maizuo_users.find().skip(2).limit(2).sort({name:1}) 查询数据 过滤前2条 只返回两条 并且按照name属性正向排序

 

4、更新

1、将姓名为lvpeng 的用户更新为xiaoxiong

Db.maizuo_users.update({name:’lvpeng’},{name:’xiaoxiong’}) 

 

 

 

2、更新姓名为xiaoxiong 的用户设置它的年龄为23岁 使用$set 关键词

 

 

 

3、更新不存在的数据时,默认是不会执行成功的,但如果我们有类似的需求:在更新一条不存在的数据时,如果不存在,则insert进去,首先我们删掉namexiaoxiong 的记录,然后执行更新,设置update方法的第三个参数为true 表明如果不存在则插入

 

 

 

 

4、默认只更新第一条数据,如果我们想所有符合条件的数据,需要设置update4个参数:

 

 

5、删除

删除操作必须传递参数。与更新不同的是,默认删除所有复合条件的数据,例如:

 

 

删除表可以使用db.maizuo_users.drop();

 

索引介绍

 

数据库大的时候 使用索引可以加快速度,通过getIndexes方法可以查询索引

 

 

 

使用ensureIndex方法 创建索引,其中1代表方向,需要注意的是集合里的沪深据过多时,创建索引会比较慢,原因你应该懂的。创建完成后,再次使用age作为条件查询,速度会加快。

 

 

 

 

第三部分:简单索引使用

1、id索引

_id默认的唯一索引

 

 

2、单键索引

最普通的索引,和id索引的区别是不会自动创建。

3、多键索引

单键索引的值为一个单一的值,多键索引具有多个值

4、复合索引

 

5、过期索引

1)在一段时间后会过期的索引

2)在索引过期后,对应的数据会被删除

3)适合存储用户的登录数据或日志

4)过期单位为秒,但有一定的误差。

 

 

需要注意的是:存储在过期索引字段的值必须是指定的时间类型ISODateISODate数组 否则不能被自动删除;如果为ISODate数组 则按照最小的时间删除,另外过期索引不能为复合索引。删除时间不精确,有一定误差,1分钟的定时任务进程。

 

 

 

第四部分:全文索引

创建方法:

db.maizuo_users.ensureIndex({key:’text’}) text为固定的写法  意思为key字段上为全文索引

db.maizuo_users.ensureIndex({key1:’text’,key2:’text’}) 多字段的全文索引

db.maizuo_users.ensureIndex({‘$**’:’text’}) 所有字段的全文索引

 

 

 

1、全文索引创建

 

 

2、全文索引查询

 

首先插入两条测试数据

 

 

3、近似度查询

 

初始化数据

 

 

按之前的查询

 

 

加行score评分条件返回

 

 

 

按照score排序

 

 

 

 

4、全文索引的问题

 

每次查询只能指定一个$text查询 

$text不能排除某些查询条件

不支持中文 模糊也好像不支持

 

 

第五部分 地理位置索引

将一些点的位置存储在mongodb中, 创建索引后,可以按照位置来查询其他点。

 

1、分类

 

2d索引 用于存储和查找平面上的点

2dsphere索引 用于存储和查找球面上的点

区别是计算方式的不同

 

 

2、查找方式

 

查询距离某个点一定距离内的点

查找包含在某个区域内的点

 

3、2d索引

 

Db.maizuo_seats_ensureIndex({w:’2d’});创建索引

位置表示方式:经纬度

取值范围:[-180,180] [-90,90]

 

4、$near 查询附近的点 

 

$maxDistance最大距离

 

 

5、$geoWithin查询 查询某个形状内的点

 

(1)$box:矩形 

{$box:[[x1,y1],[x2,y2]]}

 

 

(2)$center:圆形

{$center:[[x1,y1],r]}

 

 

 

 

(3)$polygon:多边形

{$polygon[[x1,y1],[x2,y2],[x3,y3]]}

 

 

 

 

6、$geoNear查询

 

$near的升级版

Db.runCommand(

{geoNear:seats,

Near:[2,2],

minDistance:

maxDistance:

}

)

 

 

第六部分 性能评估和监控

1、mongostat工具

用于查询mongodb运行状态的程序

Mongostat -h 127.0.0.1:12345

 

 

 

2、Profile集合

 

修改level2  profile会记录所有mongodb的操作

 

 

 

 

 

 

3、日志介绍

 

mongod.conf配置文件里可以设置日志文件的详细级别

1v5v   日志在log目录下

 

4、Explain分析

 

针对一个查询的分析

 

 

 

 

 

 

第七部分 Mongodb安全

1、安全级别

(1)物理隔离

(2)网络隔离

(3)防火墙

4)用户名密码

 

2、权限开启

Auth true keyfile开启

 

 

 

3、创建用户

CreateUser({

User:’’,

Pwd:’’

customData:’’,

Roles:[{role:’roletype’,db:’’}]

})

roleType: read   readWrite   dbAdmin   dbOwner    userAdmin

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值