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

网站实用性网站内容建设 互联互通

网站实用性,网站内容建设 互联互通,游戏开发和网站开发哪个好玩,wordpress为什么进不去了0.序章 致命的面试问题:为什么使用MongoDB? 大型的分布式的文档型数据库,也是NoSQL数据库(例如 redis) MongoDB适合数据量大而价值又低的这种数据(播放进度、评论、弹幕,实时数据的CRUD&…

0.序章

致命的面试问题:为什么使用MongoDB?

大型的分布式的文档型数据库,也是NoSQL数据库(例如 redis)

MongoDB适合数据量大而价值又低的这种数据(播放进度、评论、弹幕,实时数据的CRUD)

因为数据量大,所以不适合用redis,因为redis内存没这么大;

因为价值低,量又大,所以不适合存储在MySQL中;

1.MongoDB的相关概念

常识性的内容(类比MySQL学习):

MongoDB:                                                          MySQL:

database 数据库                                                  database数据库

collection 集合(建议结构一样)                         table表(数据结构必须相同)

Document文档(json BSON Binarry-Json)       row行

field字段                                                               column列

_id 主键                                                                id主键

一个数据库可以有多个集合,一个集合可以保存多条Document。


2.安装过程(在docker环境中):

mkdir -p /opt/mongo/data/dbdocker load < /opt/mongo.tardocker run -d --restart=always -p 27017:27017 --name mongodb -v /opt/mongo/data/db:/data/db mongo:8.0-rc

3.命令行

数据库(database)

# 查看数据库
show dbs# 切换或者新增库(懒加载,当数据库中有集合或者数据时,才会真实创建)
use {dbName}# 删除库
db.dropDatabase()

集合(collection)

# 创建集合(不是必须操作,操作数据时如果集合不存在则自动创建)
db.createCollection("colName")# 查看集合  
show collections# 删除集合
db.{colName}.drop()

文档(Document)

# 新增 insert(过期) save(移除)   insertOne insertMany
db.{colName}.insertOne({k1:v1,k2:v2})
db.{colName}.insertMany([{k1:v1,k2:v2}, {k1:v1,k2:v2}, {k1:v1,k2:v2}])# 查询所有
db.{colName}.find()# 基本查询:等值
db.{colName}.find({k: v, k: v})# 不等值查询:like($regex) >($gt) <($lt) >=($gte) <=($lte) !=(ne)
db.{colname}.find({k: {$regex: v}})
db.{colName}.find({k: /v/})# or查询:或者关系
db.{colName}.find({$or: [{k: v}, {k: v}]})# 排序
db.{colName}.find().sort({key: 1/-1})# 分页
db.{colName}.find().skip((pageNum-1))*pageSize).limit(pageSize)# 更新
db.{colName}.updateOne({查询条件}, {$set: {k: v, k: v}})# 删除
db.{colName}.deleteOne({k: v})
db.{colName}.deleteMany({k: v})
db.{colName}.deleteMany({})

4.Java客户端

UI客户端

官方提供的GUI客户端:MongoDB Compass

Java客户端

SpringData-MongoDB

引入依赖:

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

配置:

# mongodb的配置
spring.data.mongodb.uri=mongodb://ip:port/dbNamespring.data.mongodb.host=192.168.30.100
spring.data.mongodb.port=27017
spring.data.mongodb.database=demo

代码:

@SpringBootTest
public class MongoTest {@Autowiredprivate MongoTemplate mongoTemplate;@Testvoid test(){this.mongoTemplate.createCollection("collection1");}
}

实际操作过程:

  1. 引入依赖

  2. 配置

  3. 编写实体类:pojo类

    @Document:作用在类上,标记对应的MongoDB的集合名称

    @Id:作用在主键字段上,建议一定要有一个字段声明为id,_id

    @Field:可以省略,除非字段名不一致

@Document("user")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {@Id // 建议一定要有一个字段定义为id,对应到_idLong id;@Field("username") // 该注解可以省略,如果字段名和MongoDB中字段名不一致,才需要指定String name;Integer age;Boolean gender;String pwd;
}

4.mongoTemplate实现文档的CRUD:数据库和集合都可以不用显式创建

	// 新增一个 批量新增@Testvoid testInsert(){this.mongoTemplate.insert(new User(1L, "柳岩", 20, false, "123456"));}// 更新@Testvoid testUpdate(){
//        UpdateResult result = this.mongoTemplate.updateFirst(UpdateResult result = this.mongoTemplate.updateMulti(
//                Query.query(Criteria.where("age").gte(33)),Query.query(Criteria.where("name").regex("小")),Update.update("age", 30),User.class);System.out.println(result.getMatchedCount());System.out.println(result.getModifiedCount());}// 删除@Testvoid testDelete(){DeleteResult result = this.mongoTemplate.remove(Query.query(Criteria.where("age").lte(23)), User.class);System.out.println(result.getDeletedCount());}

5.查询条件:

this.mongoTemplate.find(Query对象)
Query对象的初始化:Query.query(Criteria)
Criteria对象的初始化:Criteria.where("key").is/gt/gte/lt/lte/ne/regex("value").and("key1").is("value1")
排序:Query.query().with(Sort.by(Order.asc/desc("key")))
分页:Query.query().skip((pageNum-1)*pageSize).limit(pageSize)
        this.mongoTemplate.find(Query.query(Criteria.where("age").lte(30)
//                .andOperator(Criteria.where("age").lte(34))  // 同一个字段使用多次,需要andOperator.and("name").regex("小") // 如果是不同字段,一直向后进行and操作.and("pwd").is("123456").orOperator(Criteria.where("name").regex("小")) // 得出的交集不是并集。), User.class).forEach(System.out::println);// 排序this.mongoTemplate.find(Query.query(Criteria.where("name").regex("小")).with(Sort.by(Sort.Order.asc("age"))).skip(8).limit(4).with(PageRequest.of(2, 4)) // 页码从0开始, User.class).forEach(System.out::println);

http://www.dtcms.com/wzjs/573150.html

相关文章:

  • 手机网站 域名解析关于申请网站建设
  • 河南郑州做网站汉狮网站建设 加强宣传
  • 网站主机设置方法百度一下网址大全
  • 云南建设学校网站首页长春哪有做网站公司
  • WordPress网站代码修改北京市住房建设投资中心网站
  • 衡阳网站建设价格前端网站开发毕设类型
  • 石家庄网站关键词推广珠海做网站的
  • 通过网站做跳板ppt排版布局
  • h5和手机网站30秒牢记5个域名
  • 网站都要备案吗网络营销课程思政
  • 内蒙古网站建设百度wordpress源码阅读
  • 百度推广有哪些形式太原网站制作优化seo公司
  • 电影里的做视频在线观看网站营销网站的问题与优势
  • 网站开发建设推荐用书网站建设 好的公司
  • 九宫格导航网站做百度推广送网站吗
  • 个人博客网站教程购买腾讯云主机可以直接做网站
  • 太原响应式网站建设网站开发培训实训
  • 深圳网站建设定制平台怎么在网站上打广告
  • 有那些网站可以做担保交易的梅州建设公司网站
  • 程序员 做 个人网站长春网站业务哪个公司好
  • 网站打开速度多少时间网站建设维护工作
  • 网站建设w亿码酷1流量订制高端集团响应式企业网站模板
  • 网站建设的基础资料合肥哪家做网站不错
  • 网站建设与管理维护做产品封面的网站
  • 网站开发后台一般用什么智能建站软件哪个好
  • 做网站有兼职吗最便宜的网站叫什么名字
  • 如何让百度收录网站优购物官方网站手机
  • 大型 视频网站开发大同市住房与城乡建设厅网站
  • 做字幕网站有哪些做音乐网站怎么放音乐
  • 无锡便宜做网站深圳外贸集团