MongoDB-3运行笔记

MongoDB 是神马,暂且不表,可以自己搜搜。

最近试试3.0版本与以前的版本有不少变化 ,写下备忘。

一。基本操作

1.下载安装并启动

本人安装在 D:\app\mongo\bin (可以添加到Path中)

在cmd运行

mongod.exe --dbpath d:\app\mongo\data --port 1234

 启动另外一个cmd

mongo.exe localhost:1234

2.基本数据操作

添加数据

db.person.insert({“name”:”aaa”,”age”:20})

db.person.insert({“name”:”bbb”,”age”:24})

 查找数据

db.person.find()     (发现_id => GUID)

db.person.find({"name":"aaa"})

db.person.find({"age":{$gt:20}})

db.person.find({"name":{$in:["aaa","bbb"]}})

 更新

db.person.update({"name":"aaa"},{"name":"aaa","age":22})

db.person.update({"name":"aaa"},{$inc:{"age":30}})

 删除

db.person.remove({"name":"aaa"})

 

更多操作

db.person.count()

db.person.distinct("age")


group map reduce 。。。。。。

 游标

var list = db.person.find();

list.forEach(function(x){

 print(x.name);

})

 

varsingle=db.person.find().sort({"name",1}).skip(2).limit(2);

批量插入

for(var i=0;i<10000;i++){

  var r = parseInt(i*Math.random());

  db.person.insert({"name":"n"+i,"age":r})

}

执行计划

db.person.find({"name":"n9999"}).explain()

 索引

db.person.ensureIndex({"name":1})

唯一索引

db.person.ensureIndex({"name":1},{"unique":true})

db.person.ensureIndex({"name":1,"age":1})

 查看所有索引

db.person.getIndexes()

db.person.dropIndexes("name_1")

 

 

二。多库操作

 1. 读写分离(master-slave)

启动master

mongod --dbpath D:\app\mongo\data_m --port20001 --master

启动slave

mongod --dbpath D:\app\mongo\data_s1 --port20002 --slave --source localhost:20001

 另外运行mongo 来测试数据,不多说

 

 2.复制集(ReplicationSet)

 启动三个复制集,名称为MyRS

mongod --dbpath D:\app\mongo\dbs\node1--port 23441 --replSet MyRS --nojournal 

mongod --dbpath D:\app\mongo\dbs\node2--port 23442 --replSet MyRS --nojournal

mongod --dbpath D:\app\mongo\dbs\node3--port 23443 --replSet MyRS --nojournal

 

 启动mongo,连接其中任意一个,初始化复制集

rs.initiate({_id:"MyRS",members:[

{_id:1,host:"localhost:23441"},

{_id:2,host:"localhost:23442"},

{_id:3,host:"localhost:23443"},

]})

 启动仲裁者

mongod --dbpath D:\app\mongo\dbs\node4--port 23444 --replSet MyRS/localhost:23441

 告诉复制集仲裁者

rs.addArb("127.0.0.1:23444")

 查看谁是Primay/Secondary

rs.status()

添加数据进行比较

停止其中一个再看看谁是Primay/Secondary。

 

 

3.分片(Shard)

配置一个或多个config server:(one or multi config server,充当配置器)

mongod --configsvr --dbpathD:\app\mongo\dbs\config --port 23330

 

启动一个或多个Mongos server: (相当一个路由器)

mongos --port 23440 --configdb127.0.0.1:23330

 

 启动多个Shard(具体存储数据

mongod --dbpath D:\app\mongo\dbs\s1 --port23441

mongod --dbpath D:\app\mongo\dbs\s2 --port23442


注意分清mongos     mongod

连接到mongs,告诉要添加哪些shard,对谁shard,怎么shard

mongo --host localhost --port 23440

sh.addShard("localhost:23441")

sh.addShard("localhost:23442")

sh.enableSharding("test")

 Shard原则,这个下回再仔细说说。

sh.shardCollection("test.person",{"name": 1 } )

sh.shardCollection("test.person",{ "_id": "hashed" } )

 通过mongs插入数据

for(var i=0; i<10000; i++){

 db.person.insert({"name":"n"+i,"age":i});

}

在每个Shard去查看数据,采用hashed方式的,可以看到每个Shard数据大小差不多

 



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值