当前位置: 首页 > news >正文

mongo 适应场景

docker 部署mongo

27017 端口 user / password

docker run -d \--name my-mongo \-p 27018:27017 \  # 宿主机 27018 映射到容器 27017-v /root/mongo/data:/data/db \-v /root/mongo/config:/data/configdb \-e MONGO_INITDB_ROOT_USERNAME=admin \-e MONGO_INITDB_ROOT_PASSWORD=123456 \mongo

在 MongoDB 中,查看文档(即查询集合中的数据)主要使用 find() 方法,常用命令如下:

1. 查看集合中所有文档

// 语法:db.集合名.find()
db.users.find()  // 查看 users 集合中的所有文档(默认不格式化输出)// 格式化输出(更易读)
db.users.find().pretty()

2. 条件查询(指定筛选条件)

// 语法:db.集合名.find({条件})
// 示例1:查询 age 等于 25 的文档
db.users.find({ age: 25 }).pretty()// 示例2:查询 age 大于 18 且小于 30 的文档
db.users.find({ age: { $gt: 18, $lt: 30 } }).pretty()// 示例3:查询 name 为 "张三" 且 gender 为 "男" 的文档
db.users.find({ name: "张三", gender: "男" }).pretty()

3. 只返回指定字段(投影查询)

// 语法:db.集合名.find({条件}, {字段名: 1/0}) 
// 1: 显示该字段,0: 隐藏该字段(_id 默认显示,需手动隐藏)
// 示例:查询所有用户,只显示 name 和 age,隐藏 _id
db.users.find({}, { name: 1, age: 1, _id: 0 }).pretty()

4. 限制返回数量(分页)

// 只返回前 5 条
db.users.find().limit(5).pretty()// 跳过前 5 条,返回接下来的 5 条(常用于分页)
db.users.find().skip(5).limit(5).pretty()

5. 排序查询结果

// 语法:.sort({字段名: 1/-1})  1: 升序,-1: 降序
// 示例:按 age 降序排列(从大到小)
db.users.find().sort({ age: -1 }).pretty()

6. 查看符合条件的第一条文档

// 等价于 find() 后取第一条,更简洁
db.users.findOne({ age: 25 })  // 自动格式化,无需加 pretty()

在 Spring Boot 中使用 MongoDB 主要通过 Spring Data MongoDB 框架实现,它简化了数据访问层的开发。以下是具体用法和适用场景:

一、Spring Boot 集成 MongoDB 步骤

1. 引入依赖(Maven)

pom.xml 中添加:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2. 配置连接信息

application.yml 中配置 MongoDB 连接:

spring:data:mongodb:uri: mongodb://admin:123456@localhost:27017/数据库名?authSource=admin# 说明:admin:123456 是用户名和密码,authSource=admin 指定认证数据库
3. 定义实体类(映射 MongoDB 文档)

使用 @Document 注解指定集合名:

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "user")  // 对应 MongoDB 中的 user 集合
public class User {@Id  // 映射文档的 _id 字段private String id;private String name;private Integer age;private String email;// 省略 getter、setter、构造方法
}
4. 创建数据访问层(Repository)

继承 MongoRepository 即可获得基本 CRUD 方法:

import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;// User 是实体类,String 是主键类型
public interface UserRepository extends MongoRepository<User, String> {// 自定义查询方法(Spring Data 自动生成实现)List<User> findByAgeGreaterThan(Integer age);  // 按年龄大于指定值查询User findByName(String name);  // 按姓名查询
}
5. 业务层调用

在 Service 中注入 UserRepository 使用:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;@Service
public class UserService {@Autowiredprivate UserRepository userRepository;// 新增用户public User addUser(User user) {return userRepository.save(user);}// 查询所有用户public List<User> getAllUsers() {return userRepository.findAll();}// 按年龄查询public List<User> getUsersByAge(Integer age) {return userRepository.findByAgeGreaterThan(age);}
}

二、MongoDB 在 Spring Boot 中的适用场景

MongoDB 作为文档型数据库,适合以下场景:

1. 数据结构灵活多变的场景
  • 例如电商商品(不同商品属性差异大,如服装有尺码、颜色,电子产品有内存、型号),无需固定表结构,新增属性无需修改 schema。
  • 社交媒体内容(用户动态、评论,字段可能随时扩展,如添加“点赞数”“分享数”)。
2. 高写入/读取性能需求的场景
  • 日志存储(如系统操作日志、用户行为日志,写入频率高,MongoDB 支持高并发写入)。
  • 实时数据分析(通过索引优化,可快速查询海量数据)。
3. 海量数据存储与查询
  • 用户画像(存储用户基本信息、行为标签等,数据量大但结构松散)。
  • 物联网设备数据(传感器实时上报的数据,格式可能不统一)。
4. 快速迭代的业务
  • 创业项目或新功能试错(无需前期设计复杂表结构,开发效率高)。

三、不适合的场景

  • 强事务需求(如金融交易,虽然 MongoDB 4.0+ 支持事务,但不如关系型数据库成熟)。
  • 复杂多表关联查询(MongoDB 是文档型,关联查询性能较差,适合数据嵌入而非关联)。
  • 固定且严格的 schema 约束(如政务系统、医疗记录等需要强数据一致性的场景)。

通过 Spring Data MongoDB,开发者可以用类似操作关系型数据库的方式操作 MongoDB,同时发挥其灵活存储、高吞吐的优势,适合快速开发和处理非结构化/半结构化数据。

http://www.dtcms.com/a/458133.html

相关文章:

  • 沧浪企业建设网站价格win8导航网站模板
  • 实战篇:智能选配合理之轨——工业远心镜头选型终极攻略
  • 深入理解队列(Queue):从原理到实践的完整指南
  • 网站开发企业组织结构集团有限公司
  • 营销型网站建设 博客网页制作怎么做第二页
  • 网站前台功能傻瓜式网站
  • 初识Redis:理解其定位与适用场景
  • 网站客户端制作教程广州抖音推广公司
  • 项目绩效改进方案
  • 【碎片化学习】工具文:计算机通用术语中常见的100个英文单词
  • 解决 VNC 远程连接无法复制粘贴的完整指南
  • 门户网站建设方案ppt刷排名seo
  • 雅特力AT32单片机的使用 , 工程建立.
  • 交易平台网站建设项目需求asp.net网站开发技术
  • 手机淘宝客网站怎么做的网页设计制作实训报告模板
  • 11.1 kubectl命令行工具
  • SSM房屋租赁管理系统d97n3(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 不备案的网站需要注销吗优化大师 win10下载
  • 做盗链网站八大员继续教育入口
  • 长春网站建设首选网诚传媒_正规网站建设服务中心
  • 网站开发和软件开发区别怎么做宣传
  • 牢七的Java之旅6
  • Eclipse集成开发环境的使用
  • 免费个人网站怎么做不免费的网络营销方式
  • 秦皇岛网站建设系统推荐西部数码网站管理助手v3.0
  • 浙江网站建设广告语wordpress图片文章
  • 佛山网页网站设计个人电台网站模版
  • 360提示危险的网站在线文档 wordpress
  • 电商网站策划做翻译网站 知乎
  • 广州网站建设网站开发贵阳seo网站管理