1. 创建Sharding复制集 rs0
# mkdir /data/log # mkdir /data/db1 # nohup mongod --port 27020 --dbpath=/data/db1 --logpath=/data/log/rs0-1.log --logappend --fork --shardsvr --replSet=rs0 & # mkdir /data/db2 # nohup mongod --port 27021 --dbpath=/data/db2 --logpath=/data/log/rs0-2.log --logappend --fork --shardsvr --replSet=rs0 &
1.1 复制集rs0配置
2. 创建Sharding复制集 rs1
# mkdir /data/db3 # nohup mongod --port 27030 --dbpath=/data/db3 --logpath=/data/log/rs1-1.log --logappend --fork --shardsvr --replSet=rs1 & # mkdir /data/db4 # nohup mongod --port 27031 --dbpath=/data/db4 --logpath=/data/log/rs1-2.log --logappend --fork --shardsvr --replSet=rs1 &
2.1 复制集rs1配置
# mongo localhost:27030 > rs.initiate({_id: 'rs1', members: [{_id: 0, host: 'localhost:27030'}, {_id: 1, host: 'localhost:27031'}]}) > rs.isMaster() #查看主从关系
3. 创建Config复制集 conf
# mkdir /data/conf1 # nohup mongod --port 27100 --dbpath=/data/conf1 --logpath=/data/log/conf-1.log --logappend --fork --configsvr --replSet=conf & # mkdir /data/conf2 # nohup mongod --port 27101 --dbpath=/data/conf2 --logpath=/data/log/conf-2.log --logappend --fork --configsvr --replSet=conf &
3.1 复制集conf配置
# mongo localhost:27100 > rs.initiate({_id: 'conf', members: [{_id: 0, host: 'localhost:27100'}, {_id: 1, host: 'localhost:27101'}]}) > rs.isMaster() #查看主从关系
4. 创建Route
# nohup mongos --port 40000 --configdb conf/localhost:27100,localhost:27101 --fork --logpath=/data/log/route.log --logappend &
4.1 设置分片
# mongo localhost:40000 > use admin > db.runCommand({ addshard: 'rs0/localhost:27020,localhost:27021'}) > db.runCommand({ addshard: 'rs1/localhost:27030,localhost:27031'}) > db.runCommand({ enablesharding: 'test'}) > db.runCommand({ shardcollection: 'test.user', key: {name: 1}})
按日、按月、按年、按周、按小时、按分钟聚合操作如下:
db.getCollection('m_msg_tb').aggregate( [ {$match:{m_id:10001,mark_time:{$gt:new Date(2017,8,0)}}}, {$group: { _id: {$dayOfMonth:'$mark_time'}, pv: {$sum: 1} } }, {$sort: {"_id": 1}} ])
时间关键字如下:
db.articles.aggregate({ $project : { title: 2, by_user: 1, } })
这样子也是可行的。也就是说非0也可以进行表示显示该字段,负数也可以表示显示该字段。
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
以上实例类似sql语句:
select by_user as _id, count(*) as num_tutorial from mycol group by by_user
利用 TTL 集合对存储的数据进行失效时间设置:经过指定的时间段后或在指定的时间点过期,MongoDB 独立线程去清除数据。类似于设置定时自动删除任务,可以清除历史记录或日志等前提条件,设置 Index 的关键字段为日期类型 new Date()。
例如数据记录中 createDate 为日期类型时:
db.col.createIndex({"createDate": 1},{expireAfterSeconds: 180})
由记录中设定日期点清除。
设置 A 记录在 2019 年 1 月 22 日晚上 11 点左右删除,A 记录中需添加 "ClearUpDate": new Date('Jan 22, 2019 23:00:00'),且 Index中expireAfterSeconds 设值为 0。
db.col.createIndex({"ClearUpDate": 1},{expireAfterSeconds: 0})
其他注意事项:
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1206MongoDB 分片
1. 创建Sharding复制集 rs0
1.1 复制集rs0配置
# mongo localhost:27020> rs.initiate({_id: 'rs0', members: [{_id: 0, host: 'localhost:27020'}, {_id: 1, host: 'localhost:27021'}]})> rs.isMaster() #查看主从关系2. 创建Sharding复制集 rs1
2.1 复制集rs1配置
3. 创建Config复制集 conf
3.1 复制集conf配置
4. 创建Route
4.1 设置分片
1205MongoDB 聚合
按日、按月、按年、按周、按小时、按分钟聚合操作如下:
时间关键字如下:
1204MongoDB 聚合
这样子也是可行的。也就是说非0也可以进行表示显示该字段,负数也可以表示显示该字段。
1203MongoDB 聚合
以上实例类似sql语句:
1202MongoDB 索引
利用 TTL 集合对存储的数据进行失效时间设置:经过指定的时间段后或在指定的时间点过期,MongoDB 独立线程去清除数据。类似于设置定时自动删除任务,可以清除历史记录或日志等前提条件,设置 Index 的关键字段为日期类型 new Date()。
例如数据记录中 createDate 为日期类型时:
由记录中设定日期点清除。
设置 A 记录在 2019 年 1 月 22 日晚上 11 点左右删除,A 记录中需添加 "ClearUpDate": new Date('Jan 22, 2019 23:00:00'),且 Index中expireAfterSeconds 设值为 0。
其他注意事项: