您的位置:首页 > 数据库 > Mongodb

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数据大小差不多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: