MongoDB-3运行笔记
2015-08-07 17:02
543 查看
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数据大小差不多
最近试试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数据大小差不多
相关文章推荐
- Oracle海量数据导入MongoDB 采用JAVA反射-Penghao
- MongoDB基本用法
- MongoDB Mongodb.conf 配置 Auth
- mongodb 常用命令
- MongoDB常用操作对比T-Sql
- MongoDB导出、备份、恢复
- MongoDB常用命令大全
- Mongodb与Spring配合使用的例子
- 启动mongodb报1067错误
- MongoDB分片集群配置
- 【MongoDB】3.0 配置文件相关介绍
- mongoDb的索引
- MongoDB基本命令使用
- mongodb初学-java操作mongodb
- mongodb常见管理命令
- mongodb高可用Replica Set
- mongodb增删改查
- mongodb入门安装
- mongodb初学-常用基本命令
- spring mongodb 修改内嵌list字段值