标签:
1.下载解压mongodb,配置环境变量
tar -zxvf mongodb-linux-x86_64-rhel62-3.2.7.tgz
export PATH=<mongodb-install-directory>/bin:$PATH
2.创建数据保存目录
mkdir -p /data/db
3.mongodb启动
./mongod //默认启动
./mongod --dbpath=/data/db //启动mongodb并指定数据保持目录
./mongod --dbpath=/data/db --rest //启动mongodb并启动web用户界面(http://ip:28017)
4.使用本地客户端关闭mongodb(禁止使用kill -9)
./mongod
use admin
db.shutdownServer() //默认关闭
db.shutdownServer({force : true}) //强制关闭
db.shutdownServer({force : true, timeoutsec : 5}) //指定超时时间,超时时间的关闭服务器
5.数据库基本操作命令
mongodb://admin:123456@localhost/test //使用用户名和密码连接登陆到指定数据库
use DATABASE_NAME //创建数据库
show dbs //查看所有数据库
db.dropDatabase() //删除数据库
db.collection.drop //删除集合
db.col.insert(document) //向 runoob 数据库插入一些数据
db.col.save(document) //类似insert()方法,如果指定 _id,则会更新该_id的数据。
db.col.remove({"age":"255"},1) //删除一条数据
db.col.update({"name":"hello"},{$set:{"age":"255"}}) //更新数据
db.col.update({"age":{$eq:"24"}},{$set:{"name":"hehe"}});//更新指定文档
db.col.save(<document>,{writeConcern: <document>}) //通过传入的文档来替换已有文档,参数writeConcern :可选,抛出异常的级别。
db.col.find() //查询数据
db.col.find().pretty() //格式化查询数据
db.col.find({"name":"hehe","_id":"abc"}) //AND条件查询
db.col.find({$or:[{"name":"hehe"},{"_id":"abc"}]}) //OR条件查询
6.mongodb条件操作符
(>) 大于 - $gt db.col.find({"num":{$gt:3}})
(<) 小于 - $lt db.col.find({"num":{$lt:3}})
(>=) 大于等于 - $gte db.col.find({"num":{$gte:3}})
(<= ) 小于等于 - $lte db.col.find({"num":{$lte:3}})
7.mongodb中$type操作符
Double 1 db.col.find({"num" : {$type : 1}})
String 2
Object 3
Array 4
Binary data 5
Undefined 6 已废弃。
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript (with scope) 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255 Query with -1.
Max key 127
7.mongodb中Limit与Skip方法
db.col.find().limit(1) //读取指定数量的数据记录
db.col.find().skip(1) //跳过指定数量的数据
db.col.find().limit(10).skip(10*0) //分页查询第一页
8.mongodb sort()方法
db.col.find().sort({"num":1}) //1为升序排列
db.col.find().sort({"num":-1}) //-1是用于降序排列
9.mongodb使用ensureIndex()方法来创建索引。
db.col.ensureIndex({"num":1}) //1为指定按升序创建索引
db.col.ensureIndex({"num":1}) //-1为指定按降序来创建索引
ensureIndex()接收可选参数,可选参数列表如下:
Parameter Type Description
background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false。
unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDups Boolean 在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_language string 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_override string 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为language.
10.mongodb使用aggregate()聚合方法,主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。
db.col.aggregate([{$group : {_id : "$num", count : {$sum : 1}}}])
聚合的表达式:
表达式 描述 实例
$sum 计算总和。 db.col.aggregate([{$group:{_id:"$by_user",num_tutorial:{$sum:"$likes"}}}])
$avg 计算平均值 db.col.aggregate([{$group:{_id:"$by_user",num_tutorial:{$avg:"$likes"}}}])
$min 获取集合中所有文档对应值得最小值。 db.col.aggregate([{$group:{_id:"$by_user",num_tutorial:{$min:"$likes"}}}])
$max 获取集合中所有文档对应值得最大值。 db.col.aggregate([{$group:{_id:"$by_user",num_tutorial:{$max:"$likes"}}}])
$push 在结果文档中插入值到一个数组中。 db.col.aggregate([{$group:{_id:"$by_user",url:{$push:"$url"}}}])
$addToSet 在结果文档中插入值到一个数组中,但不创建副本。 db.col.aggregate([{$group:{_id:"$by_user",url:{$addToSet:"$url"}}}])
$first 根据资源文档的排序获取第一个文档数据。 db.col.aggregate([{$group:{_id:"$by_user",first_url:{$first:"$url"}}}])
$last 根据资源文档的排序获取最后一个文档数据 db.col.aggregate([{$group:{_id:"$by_user",last_url:{$last:"$url"}}}])
聚合框架中常用的几个操作:
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。 db.col.aggregate({$project:{"_id":0,"title":1,"tags":1}})
$match: 用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。 db.col.aggregate([{$match:{likes:{$lte:100}}},{$group:{_id:"$title",count:{"$sum":"$likes"}}}])
$limit: 用来限制MongoDB聚合管道返回的文档数。 db.col.aggregate({$limit:2})
$skip: 在聚合管道中跳过指定数量的文档,并返回余下的文档。 db.col.aggregate({$skip:1})
$unwind: 将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group: 将集合中的文档分组,可用于统计结果。
$sort: 将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。
11.mongodb复制(副本集)
指定--replSet 选项来启动mongodb mongod --port 27017 --dbpath "/data/db" --replSet rs0
启动一个新的副本集 rs.initiate() ###客户端使用命令
查看副本集的配置 rs.conf()
查看副本集状态 rs.status()
添加副本集的成员 rs.add(HOST_NAME:PORT)
判断当前运行的Mongo服务是否为主节点 db.isMaster()
12.mongodb分片
MongoDB中使用分片集群结构分布中主要组件:
Shard:用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障
Config Server:mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。
Query Routers:前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
步骤一:启动Shard Server
mkdir -p /data/mongoDB/shard/s0
mkdir -p /data/mongoDB/shard/s1
mkdir -p /data/mongoDB/shard/s2
mkdir -p /data/mongoDB/shard/s3
mkdir -p /data/mongoDB/shard/log
/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.7/bin/mongod --port 27020 --dbpath=/data/mongoDB/shard/s0 --logpath=/data/mongoDB/shard/log/s0.log --logappend --fork
/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.7/bin/mongod --port 27021 --dbpath=/data/mongoDB/shard/s1 --logpath=/data/mongoDB/shard/log/s1.log --logappend --fork
/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.7/bin/mongod --port 27022 --dbpath=/data/mongoDB/shard/s2 --logpath=/data/mongoDB/shard/log/s2.log --logappend --fork
/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.7/bin/mongod --port 27023 --dbpath=/data/mongoDB/shard/s3 --logpath=/data/mongoDB/shard/log/s3.log --logappend --fork
步骤二: 启动Config Server
mkdir -p /data/mongoDB/shard/config
/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.7/bin/mongod --port 27100 --dbpath=/data/mongoDB/shard/config --logpath=/data/mongoDB/shard/log/config.log --logappend --fork
步骤三: 启动Route Process
/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.7/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/data/mongoDB/shard/log/route.log --chunkSize 500
步骤四: 配置Sharding
接下来,我们使用MongoDB Shell登录到mongos,添加Shard节点
/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.7/bin/mongo admin --port 40000
mongos> db.runCommand({ addshard:"localhost:27020" })
mongos> db.runCommand({ addshard:"localhost:27021" })
mongos> db.runCommand({ addshard:"localhost:27022" })
mongos> db.runCommand({ addshard:"localhost:27023" })
mongos> db.runCommand({ enablesharding:"test" }) ####设置分片存储的数据库
mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}})
步骤五: 程序代码内无需太大更改,直接按照连接普通的mongo数据库那样,将数据库连接接入接口40000
13.mongodb数据备份和数据恢复
mongodump命令脚本语法如下:
./bin/mongodump -h 127.0.0.1:27020 -d test -o /data/dump
-h:mongdb所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:/data/dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
mongorestore命令脚本语法如下:
./bin/mongorestore --host=127.0.0.1 --port=27020 --db=test --dir=/data/dump/test --drop
./bin/mongorestore --help
-h:mongodb所在服务器地址
-d:需要恢复的数据库实例,例如:test
--dir:备份数据所在位置,例如:/data/dump/test
--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
14.mongodb中提供了mongostat和mongotop两个命令来监控mongodb的运行情况。
./bin/mongostat --host=127.0.0.1 --port=27020
./bin/mongotop --host=127.0.0.1 --port=27020 3
参考:http://www.runoob.com/mongodb/mongodb-tutorial.html
标签:
原文地址:http://www.cnblogs.com/wanshoushou/p/5674967.html