当前位置:   article > 正文

Springboot 操作Mongodb(一)

Springboot 操作Mongodb(一)

MongoDB概念

MongoDB 基本概念指的是学习 MongoDB 最先应该了解的词汇,比如 MongoDB 中的"数据库"、"集合"、"文档"这三个名词:

  • 文档(Document): 文档是 MongoDB 中最基本的数据单元,由键值对组成,类似于 JSON 格式,可以存储不同字段,字段的值可以包括其他文档,数组和文档数组。(相当于mysql每一行就是一个文档)
  • 集合(Collection): 集合指的是文档组(类似于 Mysql 中的表的概念),里面可以存储许多文档。
  • 数据库(Database): MongoDB 中可以存在多个数据库,每个数据库中中用有不同的集合与用户权限,这样可以供不同的项目组使用不同的数据库。

当然,还有其它一些概念,比如:

  • _id(主键): 主键主要作用是用于保证数据完整性,加快数据库的访问速度,方便快速定位某个文档。在 MongoDB 中可以手动指定文档主键 ID,如果未手动指定则 MongoDB 会生成 12 位的 ObjectID。
  • index(索引): 索引是一种特殊的数据结构,存储在一个易于遍历读取的数据集合中,其能够对数据库文档中的数据进行排序的一种结构。索引通常能极大提高文档查询效率,如果没有设置索引,MongoDB 会遍历集合中的整个文档,选取符合查询条件的文档记录。这种查询效率是非常低的,当处理大量时,查询可能需要花费几十秒甚至几分钟,这对网站的性能是非常致命的。

依赖

版本自己选择

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>3.3.5</version>
</dependency>

 

操作

创建集合

  1. import org.springframework.data.mongodb.core.CollectionOptions;
  2. import org.springframework.data.mongodb.core.MongoTemplate;
  3. import org.springframework.data.mongodb.core.query.Criteria;
  4. import org.springframework.data.mongodb.core.query.CriteriaDefinition;
  5. import org.springframework.data.mongodb.core.validation.Validator;
  6. import org.springframework.stereotype.Service;
  7. import javax.annotation.Resource;
  8. @Service
  9. public class CreateCollectionService {
  10. @Resource
  11. private MongoTemplate mongoTemplate;
  12. /**
  13. * 创建【集合】
  14. *
  15. * 创建一个大小没有限制的集合(默认集合创建方式)
  16. *
  17. * @return 创建集合的结果
  18. */
  19. public Object createCollection() {
  20. // 设置集合名称
  21. String collectionName = "users1";
  22. // 创建集合并返回集合信息
  23. mongoTemplate.createCollection(collectionName);
  24. // 检测新的集合是否存在,返回创建结果
  25. return mongoTemplate.collectionExists(collectionName) ? "创建视图成功" : "创建视图失败";
  26. }
  27. /**
  28. * 创建【固定大小集合】
  29. *
  30. * 创建集合并设置 `capped=true` 创建 `固定大小集合`,可以配置参数 `size` 限制文档大小,可以配置参数 `max` 限制集合文档数量。
  31. *
  32. * @return 创建集合的结果
  33. */
  34. public Object createCollectionFixedSize() {
  35. // 设置集合名称
  36. String collectionName = "users2";
  37. // 设置集合参数
  38. long size = 1024L;
  39. long max = 5L;
  40. // 创建固定大小集合
  41. CollectionOptions collectionOptions = CollectionOptions.empty()
  42. // 创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
  43. .capped()
  44. // 固定集合指定一个最大值,以千字节计(KB),如果 capped 为 true,也需要指定该字段。
  45. .size(size)
  46. // 指定固定集合中包含文档的最大数量。
  47. .maxDocuments(max);
  48. // 执行创建集合
  49. mongoTemplate.createCollection(collectionName, collectionOptions);
  50. // 检测新的集合是否存在,返回创建结果
  51. return mongoTemplate.collectionExists(collectionName) ? "创建视图成功" : "创建视图失败";
  52. }
  53. /**
  54. * 创建【验证文档数据】的集合
  55. *
  56. * 创建集合并在文档"插入"与"更新"时进行数据效验,如果符合创建集合设置的条件就进允许更新与插入,否则则按照设置的设置的策略进行处理。
  57. *
  58. * * 效验级别:
  59. * - off:关闭数据校验。
  60. * - strict:(默认值) 对所有的文档"插入"与"更新"操作有效。
  61. * - moderate:仅对"插入"和满足校验规则的"文档"做"更新"操作有效。对已存在的不符合校验规则的"文档"无效。
  62. * * 执行策略:
  63. * - error:(默认值) 文档必须满足校验规则,才能被写入。
  64. * - warn:对于"文档"不符合校验规则的 MongoDB 允许写入,但会记录一条告警到 mongod.log 中去。日志内容记录报错信息以及该"文档"的完整记录。
  65. *
  66. * @return 创建集合结果
  67. */
  68. public Object createCollectionValidation() {
  69. // 设置集合名称
  70. String collectionName = "users3";
  71. // 设置验证条件,只允许岁数大于20的用户信息插入
  72. CriteriaDefinition criteria = Criteria.where("age").gt(20);
  73. // 设置集合选项验证对象
  74. CollectionOptions collectionOptions = CollectionOptions.empty()
  75. .validator(Validator.criteria(criteria))
  76. // 设置效验级别
  77. .strictValidation()
  78. // 设置效验不通过后执行的动作
  79. .failOnValidationError();
  80. // 执行创建集合
  81. mongoTemplate.createCollection(collectionName, collectionOptions);
  82. // 检测新的集合是否存在,返回创建结果
  83. return mongoTemplate.collectionExists(collectionName) ? "创建集合成功" : "创建集合失败";
  84. }
  85. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/470566
推荐阅读
相关标签
  

闽ICP备14008679号