文章      动态     相关文章     最新文章     手机版动态     相关动态     |   首页|会员中心|保存桌面|手机浏览

bulct3

http://fabua.ksxb.net/combulct3/

相关列表
文章列表
  • 暂无文章
推荐文章
联系方式
  • 联系人:汪女士
  • 电话:13861840722
Mongodb使用
发布时间:2024-12-04        浏览次数:0        返回列表


本文主要介绍Mongodb在java应用中如何进行增、删、查、改操作。

Mongodb使用

一、配置

1、将 common.jar库引入到项目环境中: (源代码:https://gitee.com/cnsugar/common,可直接下载lib目录下的jar文件使用) 

  如果是maven项目,可以通过mvn install命令将common.jar加入到本地仓库:

然后在pom.xml中加入以下配置:

  

  也可以直接将jar文件放到项目中,用下面的方式引入:

 

2、用同样的方式将 common-mongodb.jar库引入到项目环境中: (源代码:https://gitee.com/cnsugar/common-mongondb,可直接下载lib目录下的jar文件使用) 

3、增加依赖包  

 

 

4、增加spring配置文件

  mongodb-config.properties

 

 

  spring-context-config.xml

 

  如果需要在项目中读取其他配置文件中的内容,可以将org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 换成 com.cnsugar.common.config.SystemConfig,可以直接使用SystemConfig中的静态get方法读取配置文件。

  

  spring-context-mongodb.xml

  mongo-client配置属性说明:
    id: MongoClient的名称,默认值:mongoClient
    port: 连到到MongoDB服务器的端口号,默认:27017
    host: 连接到MongoDB服务器的host,默认:localhost
    replica-set: 逗号分隔的的副本集集合,格式为host:port,host:port
    credentials: 用户身份认证逗号分隔的配置,格式:username:password@database,如果传递的认证包含逗号,则使用单引号括起来
client-options配置属性说明:
        description: 描述
        min-connections-per-host: 客户端最小连接数
        connections-per-host: 客户端最大连接数,超过了将会被阻塞,默认100
        threads-allowed-to-block-for-connection-multiplier: 可被阻塞的线程数因子,默认值为5,如果connectionsPerHost配置为10,那么最多能阻塞50个线程,超过50个之后就会收到一个异常
        max-wait-time: 阻塞线程获取连接的最长等待时间,默认120000 ms
        max-connection-idle-time: 连接池连接最大空闲时间
        max-connection-life-time: 连接池连接的最大存活时间
        connect-timeout: 连接超时时间,默认值是0,就是不超时
        socket-timeout: socket超时时间,默认值是0,就是不超时
        socket-keep-alive: keep alive标志,默认false
      server-selection-timeout: 服务器查询超时时间,它定义驱动在抛出异常之前等待服务器查询成功,默认30s,单位milliseconds
        read-preference: MongoDB有5种ReadPreference模式:
            primary    主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。
            primaryPreferred   首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。
            secondary    从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。
            secondaryPreferred    首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。
            nearest    最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点。
        write-concern: WriteConcern的7种写入安全机制抛出异常的级别:
            NONE: 没有异常抛出
            NORMAL: 仅抛出网络错误异常,没有服务器错误异常,写入到网络就返回。
            SAFE: 抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。
            MAJORITY: 抛出网络错误异常、服务器错误异常;并多数主服务器完成写操作。
            FSYNC_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。
            JOURNAL_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。
            REPLICAS_SAFE: 抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。
        heartbeat-frequency: 驱动用来确保集群中服务器状态的心跳频率
        min-heartbeat-frequency: 驱动重新检查服务器状态最少等待时间
        heartbeat-connect-timeout: 集群心跳连接的超时时间
        heartbeat-socket-timeout: 集群心跳连接的socket超时时间
        ssl: 驱动是否使用ssl进行连接,默认是false
        ssl-socket-factory-ref: 用来进行ssl连接的SSLSocketFactory,如果配置为none,则使用SSLSocketFactory.getDefault()
  

二、使用示例

   测试之前先新建一个实体类TestEntity,增加@Collection注解指明对应mongodb中test表。mongodb在新增数据时会自动生成一个主键_id,如果要以_id为条件进行操作需要转成ObjectId对象才能使用,继承MongoEntity可以调用getObjectId()自动处理。

  如果要控制字段的顺序,可在字段上添加@JSONField注解,用ordinal属性进行控制。如果表中的字段名与实体中的字段名不一致,可以添加name属性进行设置(如下面的代码,实体中testScore字段对应的数据库中的名字为test_score)。

 

  1、新增示例

  使用save方法进行新增数据,批量新增用saveAll方法。

   使用Robomongo客户端查看执行后的结果如下:

 

  2、更新

  调用update开头的方法进行更新操作,更新条件使用Filters对象设置,更新内容使用Update对象设置;批量更新用updateAll方法。

   更新后的结果如下图:

  

  3、查询

  调用find开头的方法进行查询,查询条件使用Filters对象设置;分页查询用findPage。

 

 

  4、删除

  调用delete开头的方法进行删除操作,条件使用Filters对象设置

 

 

  5、数据聚合分析

  使用count或mapReduce进行数据聚合分析;

 

 

  更多使用方法请参考:http://doc.tinnar.cn/javadoc/common-mongodb/com/cnsugar/common/mongodb/MongoUtils.html