单机版安装
1.创建mongodb_simple目录
2.进入此目录
3.创建data文件夹用来存储数据库的数据文件;
创建log文件夹用来存储数据库的日志文件;
创建文件夹bin用来存储数据库的可执行文件
创建文件夹conf用来存储数据库的配置文件
4.把mongod文件拷贝到bin目录下
5.在conf文件夹下创建启动配置文件mongod.conf,内容如下
port=12345 --监听的端口
dbpath=data --指明数据文件存放的位置
logpath=log/mongod.log --指明日志文件存放的位置
logappend=true --日志以追加方式进行
fork=true --表明这是一个后台进程
6.启动mongodb数据库服务 ./bin/mongod -f conf/mongod.conf
7.连接到mongodb服务 ./bin/mongo ip:端口/数据库
Shell基本操作
1.MongoDB shell不连接到任何mongod,使用参数 --nodb
2.连接时使用命令:conn=new Mongo(“some-host:30000”);db=conn.getDB(“myDB”)
3.查看MongoDB shell内置的帮助文档使用help命令
4.可以通过db.help()查看数据库级别的帮助
5.使用db.foo.help()查看集合级别的帮助
6.查看函数的实现代码通过命令db.foo.update
7.把javascript文件传给shell进行执行
mongo script1.js script2.js script3.js
load(“script1.js”);
支持的数据类型
1.null
2.布尔型
3.数值(shell默认使用64位浮点型数值)
使用NumberInt类(表示4字节带符号整数)
NumberLong类(表示8字节带符号整数)
如下:{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}
4.字符串
5.日期不存储时区
{“x”:new Date()}
6.正则表达式
{“x”:/foobar/i}
7.数组,数据列表或数据集可以表示为数组
{“x”:[“a”,”b”,”c”]}
8.内嵌文档
{“x”:{“foo”:”bar”}}
9.对象Id,对象Id是一个12字节的ID,是文档的唯一标识
{“x”:ObjectId()}
10.二进制数据
11.代码
基本命令
1.显示所有数据库
show dbs
2.切换数据库
use 数据库名
3.删除数据库
db.dropDatabase()
4.创建数据库
use wurongxiang
5.显示所有的集合
show collections
show tables
6.插入数据到集合中
db.wurongxiang_collection.insert({x:1})
7.查询集合
db.wurongxiang_collection.find()
8.指定条件查询
db.wurongxiang_collection.find({x:1})
9.可以使用js语法进行循环插入
for(i=2;i<100;i++) db.wurongxiang_colletion.insert({x:i})
10.计算集合的条数
db.wurongxiang_collection.find().count()
11.Skip函数,limit函数,sort函数
db.wurongxiang_collection.find().skip(3).limit(2).sort({x:1})
12.数据更新(两个参数最少)
db.wurongxiang_collection.update({x:1},{x:999})
13.数据更新之set运算符使用
db.wurongxiang_collection.insert({x:100,y:100,z:100})
db.wurongxiang_collection.update({z:100},{$set:{y:100}})
14.数据更新不存在的文档时插入需要使用更新的第三个操作符
db.wurongxiang_collection.update({y:100},{y:99},true)
15.数据更新默认只更新查找到的第一条数据,若要全部更新,需要使用到第四个操作符
db.wurongxinag_collection.update({c:1},{$set{c:2}},false,true)
16.删除数据为了防止误操作,必须带条件
db.wurongxiang_collection.remove({c:2})
17.删除表
db.wurongxiang_collection.drop()
18.显示索引
db.wurongxiang_collection.getIndexes()
19.创建索引
db.wurongxinag_collection.ensureIndex({x:1})
索引种类
1._id索引(绝大多数集合默认建立的唯一的索引)
2.单键索引(与_id索引不同,不会自动创建)
3.多键索引
db.wurongxiang_collection.insert({x:[1,2,3,4,5]})
4.复合索引
db.wurongxiang_collection.ensureIndex({x:1,y:1})
5.过期索引(ttl索引)
db.wurongxiang_collection.ensureIndex({time:1},{expireAfterSeconds:30})
db.wurongxiang_collection.insert({time:new Date()})
Note==>过期索引的限制:
1.存储在过期索引字段的值必须是指定的时间类型(必须是ISODate或者ISODate数组,不能
使用时间戳,否则不能被自动删除)
2.如果指定了ISODate数组,则按照最小的时间进行删除
3.过期索引不能是复合索引
4.删除时间不是精确的。(删除过程是由后台程序每60s跑一次,而且删除也需要一些时
间,所以存在误差)
6.全文索引
db.wurongxiang_collection.ensureIndex({“article”:”text”})
db.wurongxiang_collection.insert({“article”:”aa bb cc dd ee”})
db.wurongxiang_collection.insert({“article”:”aa bb cc rr gg”})
db.wurongxiang_collection.insert({“article”:”aa bb cc hh”})
db.wurongxiang_collection.find({$text:{$search:”aa”}})
db.wurongxiang_collection.find({$text:{$search:”rr”}})
db.wurongxiang_collection.find({$text:{$search:”aa bb cc”}})
db.wurongxiang_collection.find({$text:{$search:”aa bb -cc”}})
db.wurongxiang_collection.find({$text:{$search:”\”aa\” \“bb\” \“cc\””}})
db.wurongxiang_collection.find({$text:{$search:”aa bb”}},{score:
{$meta:"textScore"}}).sort({score:{$meta:"textScore"}})
Note==>全文索引的使用限制
1.每次查询,只能指定一个$text查询
2.$text查询不能出现在$nor查询中
3.查询中如果包含$text,hint不在起作用
4.MongoDB全文索引不支持中文
MongoDB复制集
1.复制集概念
传统的主从结构master/slave演变而来的复制集
复制集是由一组拥有相同数据集的mongod实例所组成的集群
有一个数据节点为主节点,来接收所有的写操作,其他的数据节点都是从节点。
2.复制集特点
主是唯一的,但是主节点是哪一个不确定,当主节点挂了,会从从节点挑选一个充当主节点
大多数原则即集群存活节点小于等于二分之一时集群不可写,只可读
mongodb从库无法写入
3.Mongodb副本节点不允许读,需要设置副本节点可读才可以读
db.getMongo().setSlaveOk();
4.创建复制集初始化变量的时候一定要用实际的ip不能用localhost或127.0.0.1
5.查看复制集状态
rs.status()
6.查看复制集状态的另一种方法:
use admin
db.adminCommand(...)
7.查看复制集的配置
rs.conf()
8.通过命令把主节点降级为从节点
rs.stepDown(50)
9.查看复制集日志
show log rs