广告
返回顶部
首页 > 资讯 > 数据库 >【MongoDB】spring-data-mongo配置
  • 650
分享到

【MongoDB】spring-data-mongo配置

2024-04-02 19:04:59 650人浏览 八月长安
摘要

config.properties#mongoDB setting monGo.host=127.0.0.1 mongo.port=27017 mongo.connectionsPerHost=1

  • config.properties

#mongoDB setting
monGo.host=127.0.0.1
mongo.port=27017
mongo.connectionsPerHost=100
mongo.threadsAllowedToBlockForConnectionMultiplier=50
mongo.connectTimeout=1000
mongo.maxWaitTime=1500
mongo.autoConnectRetry=true
mongo.SocketKeepAlive=true
mongo.socketTimeout=0
mongo.slaveOk=true


  • spring_mongo.xml

<!--引入配置属性文件 -->
<context:property-placeholder location="classpath:db.properties" />

<!-- mongodb配置 -->
<mongo:mongo id="mongo" replica-set="${mongo.replica-set}" write-concern="SAFE">
	<mongo:options 
		connections-per-host="${mongo.connectionsPerHost}"
		threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
		connect-timeout="${mongo.connectTimeout}" 
		max-wait-time="${mongo.maxWaitTime}"
		auto-connect-retry="${mongo.autoConnectRetry}" 
		socket-keep-alive="${mongo.sockeTKEepAlive}"
		socket-timeout="${mongo.socketTimeout}" 
		slave-ok="${mongo.slaveOk}"
		write-number="1" 
		write-timeout="0" 
		write-fsync="true" 
	/>
</mongo:mongo>

<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
<mongo:db-factory id="mongoDbFactory" dbname="uba" mongo-ref="mongo" />

<!-- 读写分离级别配置  -->
<!-- 首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。 -->
<bean id="primaryPreferredReadPreference" class="com.mongodb.TaggableReadPreference.PrimaryPreferredReadPreference"></bean>
<!-- 最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点。  -->
<bean id="nearestReadPreference" class="com.mongodb.TaggableReadPreference.NearestReadPreference"></bean>
<!-- 从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。存在的问题是secondary节点的数据会比primary节点数据旧。  -->
<bean id="secondaryReadPreference" class="com.mongodb.TaggableReadPreference.SecondaryReadPreference"></bean>
<!-- 优先从secondary节点进行读取操作,secondary节点不可用时从主节点读取数据  -->
<bean id="secondaryPreferredReadPreference" class="com.mongodb.TaggableReadPreference.SecondaryPreferredReadPreference"></bean>

<!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
	<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
	<property name="readPreference" ref="primaryPreferredReadPreference" />
</bean>

<!-- 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射 -->
<mongo:mapping-converter base-package="dev.lzq.uba.mongo.model" />

<!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->
<mongo:repositories base-package="dev.lzq.uba.mongo.dao" />


  • entity

@Document(collection = "user")
public class User 
{
	@Id
	private int id;
	private String name;
	private int age;
	private String city;
	private String mote;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getMote() {
		return mote;
	}
	public void setMote(String mote) {
		this.mote = mote;
	}
	
}


  • dao配置

public interface MGUserDao extends MongoRepository<User, ObjectId>
{
	
	public Page<User> findByAgeGreaterThan(int age, Pageable page);
	
	
	@Query("{'name':{'$regex':?0}, 'age': {'$gte':?1,'$lte':?2}}")
	public Page<User> findByNameAndAgeRange(String name, int ageFrom, int ageTo, Pageable pageable);
	
	@Query("{?0:?1}")
	public List<User> findByAttribute(String key, String value);
}


  • dao层的使用

    MongoRepository实现了的只是最基本的增删改查的功能,要想增加额外的查询方法,可以按照以下规则定义接口的方法。自定义查询方法,格式为“findBy+字段名+方法后缀”,方法传进的参数即字段的值,此外还支持分页查询,通过传进一个Pageable对象,返回Page集合。 例如:

//查询大于age的数据 
public Page<Product> findByAgeGreaterThan(int age,Pageable page) ;

    

    下面是支持的查询类型,每三条数据分别对应:(方法后缀,方法例子,mongodb原生查询语句)

GreaterThan(大于) 
findByAgeGreaterThan(int age) 
{"age" : {"$gt" : age}}

LessThan(小于) 
findByAgeLessThan(int age) 
{"age" : {"$lt" : age}}

Between(在...之间) 
findByAgeBetween(int from, int to) 
{"age" : {"$gt" : from, "$lt" : to}}

IsNotNull, NotNull(是否非空) 
findByFirstnameNotNull() 
{"age" : {"$ne" : null}}

IsNull, Null(是否为空) 
findByFirstnameNull() 
{"age" : null}

Like(模糊查询) 
findByFirstnameLike(String name) 
{"age" : age} ( age as regex)

(No keyWord) findByFirstname(String name) 
{"age" : name}

Not(不包含) 
findByFirstnameNot(String name) 
{"age" : {"$ne" : name}}

Near(查询地理位置相近的) 
findByLocationNear(Point point) 
{"location" : {"$near" : [x,y]}}

Within(在地理位置范围内的) 
findByLocationWithin(Circle circle) 
{"location" : {"$within" : {"$center" : [ [x, y], distance]}}}

Within(在地理位置范围内的) 
findByLocationWithin(Box box) 
{"location" : {"$within" : {"$box" : [ [x1, y1], x2, y2]}}}


    尽管以上查询功能已经很丰富,但如果还不能满足使用情况的话可以用一下方法---基于mongodb原本查询语句的查询方式。

    例一:在原接口中加入,注释Query里面的就是mongodb原来的查询语法,我们可以定义传进来的查询参数,通过坐标定义方法的参数。

@Query("{ 'name':{'$regex':?2,'$options':'i'}, sales': {'$gte':?1,'$lte':?2}}")
public Page<Product> findByNameAndAgeRange(String name,double ageFrom,double ageTo,Pageable page);

    例二:还可以在后面指定要返回的数据字段,如上面的例子修改如下,则只通过person表里面的name和age字段构建person对象。

@Query(value="{ 'name':{'$regex':?2,'$options':'i'}, sales':{'$gte':?1,'$lte':?2}}",fields="{ 'name' : 1, 'age' : 1}") 
public Page<Product> findByNameAndAgeRange(String name,double ageFrom,double ageTo,Pageable page);


您可能感兴趣的文档:

--结束END--

本文标题: 【MongoDB】spring-data-mongo配置

本文链接: https://www.lsjlt.com/news/50606.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【MongoDB】spring-data-mongo配置
    config.properties#mongodb setting mongo.host=127.0.0.1 mongo.port=27017 mongo.connectionsPerHost=1...
    99+
    2022-10-18
  • [MongoDB] Spring Data Mongo
    Spring Data Mongo 笔记 ...
    99+
    2022-10-18
  • 【Mongo】mongo配置文件
    大于等于3.2按这种写法 [ root@ ip - 172 - 31 - 33 - 43 conf ...
    99+
    2022-10-18
  • spring-data-mongodb-hello-world-example
    http://www.mkyong.com/mongodb/spring-data-mongodb-hello-world-example/ ...
    99+
    2022-10-18
  • MongoDB学习(四) --- MongoDB 整合Spring Data
    1、环境搭建 步骤一:修改pom文件,更新依赖 org.springframework.boot spring-boot-starter-data-mongodb org.projectlombok lombok ...
    99+
    2021-09-17
    MongoDB学习(四) --- MongoDB 整合Spring Data
  • spring-data-mongo中数据插入异常报告
    1. 背景   在一个collection中加了唯一性约束,期望插入重复数据的时候能抛出异常,以便后续处理   默认配置   <bean id="mongoTemplat...
    99+
    2022-10-18
  • mongo 3.2 replica set 配置
    一、环境信息CentOS release 6.7 (Final)mongo version: 3.2.6192.168.1.173  &...
    99+
    2022-10-18
  • spring data 连接mongodb的两种方式
    什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库。 由 C++ 语言编写,是一个开源数据库系统。 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 M...
    99+
    2022-11-12
  • 详解基于Spring Boot与Spring Data JPA的多数据源配置
    由于项目需要,最近研究了一下基于spring Boot与Spring Data JPA的多数据源配置问题。以下是传统的单数据源配置代码。这里使用的是Spring的Annotation在代码内部直接配置的方式,没有使用任何XML文件。@Con...
    99+
    2023-05-31
    spring boot 多数据源
  • mongodb配置
    安装说明系统环境:Centos-6.3安装软件:mongodb-linux-x86_64-2.2.2.tgz下载地址:http://www.mongodb.org/downloads安装机器:192.168...
    99+
    2022-10-18
  • Spring Data MongoDB如何去掉_class属性字段
    本篇文章为大家展示了Spring Data MongoDB如何去掉_class属性字段,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。oyhk 学习笔记Spring ...
    99+
    2022-10-18
  • mongo shell启动配置文件.mongorc.js(一)
    mongo shell启动配置文件.mongorc.js(一)当启动的时候,mongo检查用户HOME目录下的一个JavaScript文件.mongorc.js。如果找到,mongo在首次显示提示信息前解析...
    99+
    2022-10-18
  • mongo shell启动配置文件.mongorc.js(二)
    mongo shell启动配置文件.mongorc.js(二)如果你的主目录下有个.mongorc.js文件,那么当你启动shell时他就会自动运行。使用它可以初始化任何你经常使用的helper方法和你不想...
    99+
    2022-10-18
  • mongo副本集集群安装配置
    新建用户和目录 useradd mongodb mkdir  -p /comm/mg10000/data mkdir  -p /comm/mg10001/data mkdir...
    99+
    2022-10-18
  • mongo shell启动配置文件.mongorc.js(四)
    mongo shell启动配置文件.mongorc.js(四)~/.mongorc.js文件描述如下:#mongorc.js   ===============我的 mongorc.js 文件.提...
    99+
    2022-10-18
  • mongo shell启动配置文件.mongorc.js(三)
    mongo shell启动配置文件.mongorc.js(三)自定义MongoDB操作函数可以把自己写的js代码保存在某个地方,让MongoDB加载它,然后就可以在MongoDB的命令行里操作它们。mong...
    99+
    2022-10-18
  • mongodb 3.0 配置
    mongodb 3.0 算是一个革命性的版本,得益于新版的存储引擎WiredTiger,大幅提升性能的同时,极高的提升了数据压缩(300%)。性能对比参见:https://comerford.cc/2015...
    99+
    2022-10-18
  • pomelo+mongodb配置
     npm install pomelo 安装这个时候如果报一堆错误  可以npm config set msvs_version 2012 --global pomelo安装很...
    99+
    2022-10-18
  • Spring Data MongoDB中如何实现自定义级联
    这篇文章给大家分享的是有关Spring Data MongoDB中如何实现自定义级联的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言Spring Data MongoDB 项目提供与MongoDB文档数据库的集...
    99+
    2023-05-30
    springdata mongodb
  • mongodb安装配置
    1.Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据  存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),&...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作