springboot中使用mongodb进行简单的查询

1 篇文章 0 订阅
1 篇文章 0 订阅

引言

应用程序中,通常会使用两种数据库,一种是关系型数据库如mysql等,另一种则是非关系型数据库例如mongodb,今天我们就来讲一讲如何在springboot中使用mongodb。

依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

配置文件

这里配置的单点

spring:
  data:
    mongodb:
      username: calculate
      password: 1234calculate
      host: 120.79.128.190
      port: 27017
      database: data_db

代码编写

1、实体类

这里新建了一个新闻类的实体来做出说明

@Data
@Document(value = "test")
public class NewsMg {

	@Id
	private String id;
	
    /**
     * 标题
     */
    @Field(value = "title")
    private String title;

    /**
     * 分类
     */
    @Field(value = "news_type")
    private String type;

    /**
     * 描述
     */
    @Field(value = "abstract")
    private String describe;

    /**
     * 链接
     */
    @Field(value = "link")
    private String link;

    /**
     * 来源
     */
    @Field(value = "source")
    private String source;

    /**
     * 作者
     */
    @Field(value = "author")
    private String author;

    /**
     * 发表时间
     */
    @Field(value = "date")
    private Long resourceTime;

    /**
     * 重要性
     */
    @Field(value = "importance")
    private String importance;
}
  1. @Document注解
    这是第一个核心注解,mongodb中我们不是以表来指明,而是以文档,而这个注解最核心的就是collection或者是value,例如 @Document(value = “news”),这里注解在实体类上,表示将此实体类标注为文档类型,并且文档名为news,当然也可以不用使用这个文档名,后续会讲解
  2. @Field(value = “vol”)
    这个和@TableField一样,指定是一个字段
  3. @Id
    这个注解会指定mongodb的id,插入文档时会自动生成这个id
  4. 无需注意字段的类型,这里通过springboot会自动把字段映射到我们的实体上

2、使用repository查询

我们只需要继承接口MongoRepository<T,ID>接口即可

/**
 * 使用注解@Repository
 * 继承后实体类和主键类型
 */
@Repository
public interface newsRepository extents MongoRepository<NewsMg,String>{
	
	/**
	 * 通过id列表查找所有
	 */
	List<NewsMg> getAllByIdIn(List<String> ids);
	
	/**
	 * 通过id查找
	 */
	NewsMg findById(String id);
}

这里可以使用很多,例如 findByXXInORYY(List XX, String YY),可以通过OR和AND连接条件,当然也可以使用注解 @Aggregation(pipeline={})直接写查询语句来实现复杂的查询
但是复杂查询也可以通过下面方式进行查询

3、使用MongoTemplate查询

相比上一个查询,这里的查询操作就稍微显得繁琐一点了

	/**
	 * 注入bean 
	 */
	 @Resource
	 private MongoTemplate mongoTemplate;
	 
	 public List<RealtimeOrder> queryAfter(Long time) {
	 	// 表名,也可以不用指定
        String tableName = "table_name";
		// 构造查询条件,这里where是字段名,后续可以跟is/gt/lt等全等比较条件
		// 如果还有字段,可以使用and(字段名)或者or(字段名)继续追加条件
		Criteria criteria = Criteria.where("字段名").gte(time);
		// 构造Query
		Query query = Query.query(criteria);
		// 这里query还可以追加排序等操作
		// 例如 query.with(Sort.by(Sort.Order.desc("date")))
		// limit, query.limit(查询条数)
		// query.addCriteria() 再次追加查询条件

		// 查询 使用mongoTemplate的方法
		// 查询所有
		mongoTemplate.find(Query.query(criteria), NewsMg.class, tableName);
		// 不指定表名则直接查询实体类注解Document中的集合名,这里就是 test
		mongoTemplate.find(Query.query(criteria), NewsMg.class);
       	// 还有 findOne、findAll、count等方法,能够满足我们最基本的查询
    }


  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot使用MongoDB创建新的数据库,可以按照以下步骤进行操作: 1. 确保您已经在Spring Boot项目添加了MongoDB的依赖。可以在pom.xml文件添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 2. 在application.properties(或application.yml)文件配置MongoDB的连接信息。例如: ```properties spring.data.mongodb.uri=mongodb://localhost:27017 ``` 在上述示例,我们只指定了MongoDB的连接地址和端口号,而没有指定数据库名称。 3. 创建一个包含@Configuration注解的配置类,并定义一个MongoClient bean,用于与MongoDB进行连接。例如: ```java import com.mongodb.MongoClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MongoConfig { @Bean public MongoClient mongoClient() { return new MongoClient("localhost", 27017); } } ``` 在上述示例,我们创建了一个名为'mongoClient'的bean,并指定了MongoDB的连接地址和端口号。 4. 创建一个名为'UserRepository'的接口来处理用户数据。该接口应该继承自MongoRepository,并指定实体类类型和ID类型。例如: ```java import org.springframework.data.mongodb.repository.MongoRepository; public interface UserRepository extends MongoRepository<User, String> { } ``` 在上述示例,'User'是一个简单的实体类,可以根据您的需求进行定义。 5. 在需要使用数据库的地方注入'userRepository'接口,并使用它来执行各种数据库操作。例如,若要创建新用户,请执行以下操作: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserRepository userRepository; public void createUser(User user) { userRepository.save(user); } } ``` 在上述示例,'User'是一个表示用户的实体类。通过调用'userRepository.save(user)'方法,新用户将被保存到数据库。 请注意,MongoDB使用时会自动创建数据库,无需显式创建。当您第一次插入数据时,MongoDB将自动创建指定的数据库,并将数据存储在其

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值