`

mongodb 学习

 
阅读更多
1.基本命令

mongodb启动
help;
db.help();
show tables;
mkdir -p /home/db
mongod –port 11111 –dbpath E:\data\mongodb

> use foobar 
> db
> post = {"title":"my blog post","content":"here is my bolg post","date":"new Date"}
> db.blog.insert(post);
> db.blog.find();
> db.blog.findOne();//查找一条数据
> post.comments = []
> db.blog.update({title:"my blog post"},post) //自动显示最多20个匹配的文档
> db.blog.remove({"title":"my blog post"});


2.mapreduce学习
QueryBuilder query = QueryBuilder.start("pin").notEquals(pin)
				     						 .and("sku").in(skus)
							                 .and("updateDate").greaterThan(DateUtil.format(beginTime,DateUtil.YYYYMMDD_HHMMSS))
							                 .and("updateDate").lessThanEquals(DateUtil.format(endTime,DateUtil.YYYYMMDD_HHMMSS));
        String map =  "function(){emit(this.pin,{sku:this.sku,count:1})}";
        String reduce = "function(key,vals) {                                 "+
        " var array = [];                                                     "+
        "for(var i  in vals ){                                                "+
        "    var flag = false;                                                "+
        "    for(var j in array){                                             "+
    	"	   if(vals[i].sku==array[j]){                                     "+
    	"		  flag=true;                                                  "+
    	"	   }                                                              "+
    	"	 }                                                                "+
    	"	 if(!flag){                                                       "+
    	"      array.push(vals[i].sku);                                       "+
    	"    }	                                                              "+
    	" }                                                                   "+
    	" return array.length;                                                "+
    	"}                                                                    ";
    	
		MapReduceOutput mp1 = userOrderClient.getCollection().mapReduce(map, reduce,null, MapReduceCommand.OutputType.INLINE, query.get());
		
		//转为map,排序,截取,保存
		Map<String,Integer> result = new HashMap<String,Integer>();
		Iterator<DBObject> it=    mp1.results().iterator();
		while(it.hasNext()){
          DBObject obj=    it.next();
          String str = obj.get("value").toString();
          int value =1;
          try{
        	  value = Integer.parseInt(str.substring(0, str.length()-2));
          }catch(NumberFormatException e){}
          result.put(obj.get("_id").toString(), value);
		}


3.新建集群库/表
先切到admin库下
库:
db.runCommand({"enablesharding":"UserProfile"})

表:
db.runCommand({shardcollection:'UserProfile.User_Temporary',key:{_id:1},unique:true})

删除库
user xxx
db.runCommand({"dropDatabase": 1});


4.master/slave配置,且设置认证
slave/10.10.242.195
rm -rf /root/mongodb_slave_data
mkdir -p /root/mongodb_slave_data
./mongod --slave --source 10.10.242.196:6688  --port 6689 --dbpath /root/mongodb_slave_data   --maxConns 80000      #不加认证
use local 
db.addUser('repl','repl');
./mongod --slave --source 10.10.242.196:6688  --port 6689 --dbpath /root/mongodb_slave_data  --maxConns 80000  --auth #添加认证


master/10.10.242.196
master/10.10.242.196
rm -rf /root/mongodb_data
mkdir -p /root/mongodb_data
./mongod --master --dbpath /root/mongodb_data    --port 6688 --maxConns 80000 
use local 
db.addUser('repl','repl');
./mongod --master --dbpath /root/mongodb_data  --port 6688 --maxConns 80000  -auth
use admin
db.addUser('admin','admin');

为test添加密码
use admin
db.auth('admin','admin');
db.addUser('test','test');


5.MonogoDB Sharding + Replica Set配置集群
195
mkdir -p /usr/MonogoData/shard1_10001
mkdir -p /usr/MonogoData/shard1_10011
./mongod --shardsvr --replSet shard1 --port 10001 --dbpath /usr/MonogoData/shard1_10001/ --logpath /usr/MonogoData/shard1_10001/log.log --rest --directoryperdb --maxConns 2000 --fork &
./mongod --shardsvr --replSet shard1 --port 10011 --dbpath /usr/MonogoData/shard1_10011/ --logpath /usr/MonogoData/shard1_10011/log.log --rest --directoryperdb --maxConns 2000 --fork &
./mongo --port 10001
use admin
config={_id:'shard1',members:[{_id:0,host:'10.10.249.195:10001'},{_id:1,host:'10.10.249.195:10011'}]}
rs.initiate(config)
rs.status() 

196
mkdir -p /usr/MonogoData/shard1_10001
mkdir -p /usr/MonogoData/shard1_10011
./mongod --shardsvr --replSet shard2 --port 10001 --dbpath /usr/MonogoData/shard1_10001/ --logpath /usr/MonogoData/shard1_10001/log.log --rest --directoryperdb --maxConns 2000 --fork &
./mongod --shardsvr --replSet shard2 --port 10011 --dbpath /usr/MonogoData/shard1_10011/ --logpath /usr/MonogoData/shard1_10011/log.log --rest --directoryperdb --maxConns 2000 --fork &
./mongo --port 10001
use admin
config={_id:'shard2',members:[{_id:0,host:'10.10.249.196:10001'},{_id:1,host:'10.10.249.196:10011'}]}
rs.initiate(config)
rs.status() 

197
mkdir -p /usr/MonogoData/shard1_10001
mkdir -p /usr/MonogoData/shard1_10011
./mongod --shardsvr --replSet shard3 --port 10001 --dbpath /usr/MonogoData/shard1_10001/ --logpath /usr/MonogoData/shard1_10001/log.log --rest --directoryperdb --maxConns 2000 --fork &
./mongod --shardsvr --replSet shard3 --port 10011 --dbpath /usr/MonogoData/shard1_10011/ --logpath /usr/MonogoData/shard1_10011/log.log --rest --directoryperdb --maxConns 2000 --fork &
./mongo --port 10001
use admin
config={_id:'shard3',members:[{_id:0,host:'10.10.249.196:10001'},{_id:1,host:'10.10.249.196:10011'}]}
rs.initiate(config)
rs.status()

这样,shard就配置好了。


现在开始配置1台Mongodb Config
mkdir -p /usr/MonogoData/Config_20001
./mongod  --configsvr --port 20001 --dbpath /usr/MonogoData/Config_20001/ --logpath /usr/MonogoData/Config_20001/log.log --rest --fork &

$ ps aux | grep mongodb | grep -v grep
查看是否mongodb的进程都起来了


下面接着配置Mongs
mkdir -p /usr/MonogoData/master
./mongos --port 40000 --logpath /usr/MonogoData/master/log.log  --chunkSize 1 --configdb 10.10.249.195:20001 --fork  &

./mongo --port 40000

use admin

db.runCommand({ addshard:'shard1/10.10.249.195:10001,10.10.249.195:10011' }) 
db.runCommand({ addshard:'shard2/10.10.249.196:10001,10.10.249.196:10011' })
db.runCommand({ addshard:'shard3/10.10.249.197:10001,10.10.249.197:10011' })
db.runCommand({listshards:1})


接下来进行切片
db.runCommand({ enablesharding:'liaoyongdb' })  #指定切片数据库
db.runCommand({shardcollection:'liaoyongdb.test',key:{_id:1}})   #指定切片数据的表
printShardingStatus()


删除索引
db.runCommand({'dropIndexes':"BrowseFinalBuy",'index':'wid_1_rwid_1'});


6.集群修改ip后,无法正常启动
sharding模式直接修改admin库里某个表ip即可
Replica Sets则修改local库中某个表ip即可


7.聚合函数学习
db.liguojun.aggregate({$match:{"key":"苹果"}},{$group:{"_id":"$sku","total":{$sum:"$count"}}});

where 为 key = 苹果,按sku分组,求count的和,注意:_id 不可更改,只能为_id
分享到:
评论

相关推荐

    MongoDB学习文档.zip

    本压缩包“MongoDB学习文档.zip”包含了一个名为“MongoDB学习文档.docx”的文件,该文件很可能是对MongoDB的基础知识、安装配置、操作指南以及Java API使用的详细介绍。 MongoDB的核心特性包括其灵活性、高可用性...

    mongodb学习手册.pdf

    ### MongoDB学习手册精要知识点概览 #### 一、MongoDB简介 MongoDB,源于英文单词“humongous”,意指其设计初衷在于处理海量数据。作为一款开源、面向文档的NoSQL数据库,MongoDB凭借其灵活性和高性能,迅速成为...

    mongodb学习笔记资料

    mongodb学习笔记资料,从安装到操作库collection 对document的crud 索引 replicaSet sharding 备份与恢复

    MongoDB 学习资料集锦

    "MongoDB 学习资料集锦" 包含了深入学习 MongoDB 的关键资源,如 "mongodb权威指南" 和 "官方的详细手册"。这些资料将帮助初学者和经验丰富的开发人员掌握 MongoDB 的核心概念、操作以及最佳实践。 首先,"mongodb...

    mongodb学习手册

    这份“mongodb学习手册”可能涵盖了MongoDB的基本概念、安装配置、数据操作、查询优化、备份恢复、安全性以及一些高级特性,例如分片、复制集和聚合框架等内容。通过阅读这本手册,初学者可以快速理解MongoDB的工作...

    mongodb 学习文档

    这份"mongodb 学习文档"涵盖了多个方面的内容,包括MongoDB的基础概念、安装配置、数据模型、查询操作、聚合框架、索引管理、复制集、分片集群等关键知识点。下面将对这些主题进行详细阐述。 一、基础概念 MongoDB...

    Mongodb 学习 PPT上课教程

    MongoDB 学习 PPT 上课教程 MongoDB 是一个开源的、基于分布式的、面向文档存储的非关系型数据库。 MongoDB 的出现是为了解决大规模数据集合、多种数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的...

    mongodb学习笔记和mongodb权威指南

    `mongodb学习手册`可能是一个全面的教程,旨在引导初学者逐步了解MongoDB。它可能从安装和启动MongoDB服务开始,然后介绍数据插入、查询和更新的基本语法。此外,它可能还涵盖了一些进阶主题,如聚合框架、地理空间...

    MongoDB学习笔记思维导图.pdf

    本篇学习笔记将从基础操作到高级功能,详细阐述MongoDB的关键知识点。 首先,MongoDB的基本单元是集合(collection),类似于关系型数据库中的表,而集合中的元素称为文档(document),文档是键值对的集合,类似于...

    2024全网最全-MongoDB学习资料、安装教程

    2024全网最全-MongoDB学习资料、安装教程,是一份集学习和安装为一体的资源。MongoDB是一款基于分布式文件存储的数据库系统,由于其高效、高性能、高可用等特点而备受关注。该资源收集了众多MongoDB的学习资料和安装...

    MONGODB学习总结入门篇.pdf

    MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...

    MongoDB学习视频

    MongoDB学习视频,讲解了非关系型数据库的使用方法以及搭建方法,对mongomd进行了详细的解析!入门!

    Mongodb学习笔记.docx

    MongoDB 学习笔记 本文档是 MongoDB 学习笔记,涵盖了 NoSQL、Cache、运行平台等多个方面的知识点。 一、NoSQL 数据库 MongoDB MongoDB 是一个强大、灵活、可扩展性好的文档数据存储器,可以完成大部分关系数据库...

    MongoDB学习资料5合一

    "mongodb学习手册"作为一本基础教材,会详细介绍MongoDB的数据类型、数据结构如文档、集合和数据库,以及命令行工具的使用方法。它可能会讲解如何进行数据备份和恢复、性能优化等实用技巧,是系统学习MongoDB不可或...

    MongoDB 学习文档,内附Java代码

    ### MongoDB学习文档与Java集成详解 #### 一、MongoDB简介与安装 **MongoDB**是一种基于分布式文件存储的开源数据库系统,具有高性能、高可用性以及易扩展性等特点,适用于处理大规模数据集的应用场景。 ##### ...

    MongoDB学习资料教程讲义及代码.zip

    在“MongoDB学习资料教程讲义及代码.zip”这个压缩包中,包含了丰富的学习资源,包括讲义和实际操作代码,是学习MongoDB的理想资料。 首先,我们来详细了解MongoDB的基本概念。MongoDB是以JSON格式存储数据的,这种...

    MongoDB学习总结笔记

    以下是对MongoDB学习的一些关键知识点的详细解释: 1. **MongoDB的基本概念**:MongoDB以集合(Collections)的形式存储数据,集合相当于关系型数据库中的表。集合内包含文档(Documents),文档是JSON格式的数据...

Global site tag (gtag.js) - Google Analytics