本文共 2913 字,大约阅读时间需要 9 分钟。
MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 Web 应用提供高性能的数据存储解决方案。它介于传统关系型数据库和非关系型数据库之间,是非关系型数据库中功能最丰富、最接近关系型数据库的产品。
| 特性 | MySQL | MongoDB |
|---|---|---|
| 数据库 | 数据库 | 数据库 |
| 表 | 表 | 集合 |
| 行 | 行 | 文档 |
| 列 | 列 | 字段 |
| 查询 | SQL | MongoDB 查询语法 |
MongoDB 将数据存储为 BSON 格式,文档由 key-value 对组成,支持嵌套结构和数组。
{ "_id": ObjectId("5e141148473cce6a9ef349c7"), "title": "批量更新", "url": "http://cxytiandi.com/blog/detail/8", "author": "yinjihuan", "tags": ["java", "mongodb", "spring"], "visit_count": NumberLong(10), "add_time": ISODate("2019-02-11T07:10:32.936+0000")} MongoDB 提供基本的 CRUD 操作,支持复杂查询和聚合功能。
插入数据
Article article = new Article();article.setTitle("MongoTemplate 基本使用");article.setAuthor("yinjihuan");article.setUrl("http://cxytiandi.com/blog/detail/1");article.setTags(Arrays.asList("java", "mongodb", "spring"));article.setVisitCount(0L);article.setAddTime(new Date());mongoTemplate.save(article);查询数据
Query query = Query.query(Criteria.where("author").is("yinjihuan"));List articles = mongoTemplate.find(query, Article.class); 更新数据
Query query = Query.query(Criteria.where("author").is("yinjihuan"));Update update = Update.update("title", "MongoTemplate") .set("visitCount", 10);mongoTemplate.updateMulti(query, update, Article.class);删除数据
Query query = Query.query(Criteria.where("author").is("yinjihuan"));mongoTemplate.remove(query, Article.class);MongoDB 的聚合功能支持复杂的数据统计和处理,包括 aggregate 和 MapReduce 等方式。
aggregate 示例{ "$project": { "_id": 1, "title": 1, "visit_count": 1 }, "$match": { "title": "MongoTemplate" }, "$sort": { "visit_count": "asc" }} MapReduce 示例{ "map": { "inputs": ["status=A"], "partition": "cust_id" }, "reduce": { "key": "cust_id", "values": "$amount", "expression": "sum" }} org.springframework.boot spring-boot-starter-data-mongodb
spring.data.mongodb.database=testsspring.data.mongodb.host=localhostspring.data.mongodb.port=27017
@Autowiredprivate MongoTemplate mongoTemplate;
MongoDB 提供 GridFS 功能,支持分布式文件存储。
File file = new File("/Users/yinjihuan/Downloads/logo.png");InputStream content = new FileInputStream(file);metadata = new BasicDBObject("userId", "1001");ObjectId fileId = gridFsTemplate.store(content, file.getName(), "image/png", metadata); 掌握以下知识点已足够:
MongoDB 是一个强大的 NoSQL 数据库,适合灵活的数据存储需求。通过合理运用副本集、分片、GridFS 等特性,可以高效解决大数据存储与检索问题。结合 Spring Boot 的快速开发框架,开发者可以轻松实现 MongoDB 的高级功能。
转载地址:http://sanqz.baihongyu.com/