概念分析
数据库
文档
集合
集合就是 MongoDB 文档组,类似于 RDBMS中的表格。当第一个文档插入时,集合就会被创建。
capped collections
固定大小的collection, 需要显示的创建.
连接MongoDB服务
mongo 172.251.150.122:27017/haha_product -u qq -p qq
数据库操作
use zhengj -- 新建
db.dropDatabase() -- 删除
文档操作
1. 插入
insert() 或 save()
可执行插入操作.
db.table1.insert({"title":"mongo learning"})
document = {title:"family",member:"aman,yangyang,zhengj"}
db.table1.save(document)
for (var i=0;i<114; i++){db.t2.insert({"title":'family'+i,member:'aman'+i})}
如果指定_id字段,则是更新, 否则新插入.
2. 查询
db.table1.find().pretty()
db.table1.findOne() -- 仅查找一行
db.t2.find({id:{$gt:1},id:{$lt:10}}) -- and
db.t2.find({$or:[{id:2},{id:1}]}) -- or
db.t2.find({id:{$type:"string"}})
db.t2.find({id:{$type:"double"}}).limit(3)
db.t2.find({id:{$type:"double"}}).limit(3).skip(2) -- 忽略表中的前2行进行查询
db.t2.find({id:{$type:"double"}}).limit(3).skip(8)
db.t2.find({id:{$type:"double"}}).skip(4).sort({id:-1})
操作符:
3.更新
db.table1.update({title:"fimilies"},{title:"families",member:"aman,yangyang,zhengj"})
4. 删除
db.table1.remove({title:"mongo learning"})
db.table1.remove({title:"families"},{justOne:true})
db.table1.remove({title:"families"},true)
db.table1.remove({})
分组,排序和管道
-- 分组计数
db.t3.aggregate([{$group:{_id:"$title",count:{$sum:1}}}])
-- 排序
db.t2.find({id:{$type:"double"}}).skip(4).sort({id:-1})
-- 分组求和
db.t2.aggregate([{$group:{_id:"$id",summary:{$sum:"$id"}}}])
-- 管道
db.t2.aggregate([{$skip:5},{$group:{_id:"$id",maximum:{$max:"$id"}}}])
管道操作:
复制
复制原理图:
副本集特征:
- 单个副本集限制12个节点
配置步骤:
1. 启动master节点
mongod --port 28017 --logpath "D:\MongoDB\replSet_log \mongodb.log" --logappend --dbpath "D:\MongoDB\replSet \data" -- cpu --replSet rs0
2. 初始化master节点
rs.initiate()
rs.conf()
rs.status()
3. 启动secondary节点
mongod --port 28018 --logpath "D:\MongoDB\replSet_log \mongodb1.log" --logappend --dbpath "D:\MongoDB\replSet \data1" --bind_ip 192.168.1.12 --replSet rs0
4. 添加成员
rs.add(192.168.1.12:28018)
5. 在secondary节点查看同步结果
rs.slaveOk()
分片
为什么要用分片:
分片集群架构: