MongoDB

文章简介

  • 学之前了解知识点
    了解NoSQL是什么,和MongoDB什么关系
    了解CAP定理
    其他知识点
  • MongoDB(这里只讲Java操作MongoDB)

学之前了解知识点

  • 了解NoSQL是什么,和MongoDB什么关系
    NoSQL简介 NoSQL的意思是“不仅仅是SQL”,是目前流行的“非关系型数据库”的统称。 常见的NoSQL数据库如:Redis、CouchDB、MongoDB、HBase、Cassandra等
  • 了解CAP定理
 CAP定理, 又被称作布鲁尔定理(Eric Brewer) 
 它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 
 1:强一致性(Consistency):系统在执行过某项操作后仍然处于一致的,在分布式系统中,更 新操作执行成功后所有的用户都应该读取到最新的值,这样的系统被认为具有强一致性
  2:可用性(Availability):每一个操作总是能够在一定的时间内返回结果 
  3:分区容错性(Partition tolerance):系统在存在网络分区的情况下仍然可以接受请求并处 理,这里网络分区是指由于某种原因网络被分成若干个孤立区域,而区域之间互不相通 
  1. 根据CAP原理将数据库分成了满足CA原则、满足CP原则和满足AP原则三大类: 1:CA:单点集群,满足一致性,可用性,通常在可扩展性上不太强大,比如RDB
    2:CP:满足一致性和分区容错性,通常性能不是特别高,如分布式数据库
    3:AP:满足可用性和分区容错性,通常可能对一致性要求低一些,如大多数的NoSQL

其他知识点

一般以下的数据库都是安装到linux(我认为是非线性的数据库):redis,MongoDB
像这些数据库,最基本的要知道存储类型,增删改查的方法
在这里插入图片描述

MongoDB

  • 传统的Java代码实现:
  1. 获取驱动
    1)通过Maven来获取
<dependency> 
  <groupId>org.mongodb</groupId>
 <artifactId>mongo-java-driver</artifactId>
  <version>2.12.1</version> 
 </dependency>

2)如果不是Maven工程,也可下载mongoDB对Java支持的驱动包
地址:https://github.com/mongodb/mongo-java-driver/downloads

2.连接MongoDB服务,示例:
MongoClientmongo = new MongoClient(“192.168.1.106”,27017);

说明:
MongoClient内部实现了一个连接池,默认初始化10个连接,MongoClient对象是线 程安全的,因此可以只创建一个,在多线程环境下安全使用。 另外要注意,close方法将关闭当前所有活跃的连接,所以应该在确定不再使用 MongoDB的时候才应该关闭

3.连接池的配置,可以修改连接池的默认配置,方法是:

1:先创建MongoClientOptions对象 
2:设置该对象里面的属性值,常见的有: 
(1)connectionsPerHost:每个主机的连接数
 (2)threadsAllowedToBlockForConnectionMultiplier:线程队列数,它与connectionsPerHost值相乘的 结果就是线程队列最大值。如果连接线程满了,就会抛出“Out of semaphores to get db”错误。
  (3)maxWaitTime:最大等待连接的线程阻塞时间
   (4)connectTimeout:连接超时的毫秒。默认是0,表示不超时
    (5)socketTimeout:socket超时。默认是0,表示不超时
     (6)autoConnectRetry:控制是否在一个连接出问题时,系统会自动重试
 3:然后再连接MongoDB,此时加入选项参数即可

4.连接到MongoDB数据库,示例
DB db= mongo.getDB(“mydb”);

注意: 1:数据库名区分大小写,另外如果数据库不存在,不会报错,而是新建一个
 2: DB对象代表了和数据库的一个连接。默认情况下,当执行完数据库的查询或者更新操作后,连接将自动 回到连接池中。不需要我们手动调用代码放回池中。 

5.获取要操作的集合,示例
DBCollectionusers = db.getCollection(“users”)
6.操作

新增 :
1:第一种方式,示例:
 BasicDBObjectdata1 = new BasicDBObject(); 
 data1.put("userId", "u1234"); 
  data1.put("name", "name123");
   //或者 data1.append("userId", "u1234").append("name", "name123"); 
   users.insert(data1);//或者users.save(data1); 
   2:第二种方式,示例:
    BasicDBObjectBuilderdata1 =BasicDBObjectBuilder.start().add("userId","u234").add("name","name234"); users.insert(data1.get()); 
    3:第三种方式,示例:
     Map<String, Object> data1 = new HashMap<String, Object>();
      data1.put("userId","u345"); 
      users.insert(newBasicDBObject(data1)); 
      4:第四种方式,示例:
       String json= "{'userId': 'u456','name' : 'name456'}";
        DBObjectdata1 = (DBObject)JSON.parse(json); users.insert(data1);


删除示例
users.remove(newBasicDBObject("userId","u1")); 

修改示例 
DBObjectcondition = new BasicDBObject("userId","u234");
 users.update(condition, new BasicDBObject("userId","cc").append("name","cc")); 
 当然也可以使用修改器,比如: 
 users.update(condition, new BasicDBObject("$set",new BasicDBObject("name","ccNew"))); 

查询示例
1:查询全部数据 DBCursordbCursor= users.find();
 while(dbCursor.hasNext()){ 
     System.out.println(dbCursor.next());
  }
  2:查询第一个文档
   users.findOne();
3:带条件查询,还可以限制返回的记录数 
DBObjectcondition = new BasicDBObject("userId","u1234"); 
DBCursordbCursor= users.find(condition).limit(5); 

又比如:查询userId大于等于u1的数据,并按照userId降序排列:
 DBObjectcondition = new BasicDBObject("userId",newBasicDBObject("$gte","u1")); DBCursordbCursor= users.find(condition).sort(newBasicDBObject("userId",-1));
  如果要分页,在后面加上skip和limit,如: users.find(condition).sort(newBasicDBObject("userId",-1)).skip(1).limit(2); 

4:约束要返回的字段,如: users.find(condition,newBasicDBObject("userId",1).append("_id",0)); 


其他API说明
 1:创建集合,示例:db.createCollection("mycol"); 
 2:授权认证,示例:booleanauth = db.authenticate(userName, pwd);
  3:查找并删除的方法:collection.findAndRemove 
  4:获取所有数据库的名字的方法:mongo.getDatabaseNames() 
  5:获取所有集合的名字的方法:db.getCollectionNames();
  6:在一个连接上执行多个操作,可以用: db.requestStart();  结束的时候用 db.requestDone(); 。。。还有很多,看API吧
  • 整合Spring
    第一步:加入lib包,在Maven中
注意:Spring通过Spring Data MongoDB模块来集成和支持MongoDB
<dependency> 
<groupId>org.springframework.data</groupId>
 <artifactId>spring-data-commons</artifactId>
  <version>1.5.1.RELEASE</version>
   </dependency>
    <dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-mongodb</artifactId>
     <version>1.4.2.RELEASE</version>
      </dependency> 

第二步:在Spring的配置文件中,加入如下的命名空间

xmlns:mongo=http://www.springframework.org/schema/data/mongo 
对应的location是:
 http://www.springframework.org/schema/data/mongo 
 http://www.springframework.org/schema/data/mongo/spring-mongo-1.5.xsd

第三步:然后加入如下的Bean配置:

<mongo:mongohost="192.168.1.106" port="20000"></mongo:mongo>
 <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">    
  <constructor-argref="mongo"/>   
    <constructor-argname="databaseName" value="db2"/> 
  </bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值