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

网络营销教学网站装潢设计公司

网络营销教学网站,装潢设计公司,网站建设 文件源代码约定,wordpress获取分类的文章目录 1、什么是MongoDB 1、非关系型数据库 2、非关系型数据库分类 3、MongoDB?bson格式什么样? 2、MongoDB的优势 3、MongoDB应用场景 4、术语 5、操作 1、安装MongoDB 1、查询镜像文件【不操作】 2、拉取镜像文件 3、创建数据挂载目录 4、启…

目录

1、什么是MongoDB

1、非关系型数据库

2、非关系型数据库分类

3、MongoDB?bson格式什么样?

2、MongoDB的优势

3、MongoDB应用场景

4、术语

5、操作

1、安装MongoDB

1、查询镜像文件【不操作】

2、拉取镜像文件

3、创建数据挂载目录

4、启动容器

2、验证安装成功

1、命令及说明

3、删除用户【不操作】

1、命令及说明

4、Navicat连接

5、insert

6、find

7、delete

8、update

9、其他操作【了解】

6、SpringBoot整合

1.添加依赖

2.添加配置

3.编写Entry

4.编写DAO

5.编写DAOImpl

6.编写测试类Test

7.编写启动类


1、什么是MongoDB

1、非关系型数据库

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。

2、非关系型数据库分类

键值(Key-Value)存储数据库

类似于HashMap的方式,例如redis

列存储数据库

以列为概念的,用于处理大数据量的数据,例如HBase

文档型数据库

是应用比较广泛的,以文档形式处理数据的,文档不是硬盘上直接对应的文件,是个概念,例如MongoDB

图形(Graph)数据库

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

3、MongoDB?bson格式什么样?

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

JSON的BSON格式‌是一种二进制表示的数据交换格式,它是“Binary JSON”的缩写。

2、MongoDB的优势

  • 简单性,应用起来比较容易,易上手

  • 扩展性,指的是mango本身的拓展,比如说可以做分片模式集群等等

  • 高性能,在Wiretiger存储引擎的加持下,数据的读写可以做到更大的吞吐量

  • 高可用,自身出现故障的情况很少,也可以通过集群的方式再提供高可用性,还支持故障转移

  • 存文件,mongo天然支持文件存储,以桶的形式,用的对象是GridFS,文件会被切割成多个16M大小存储

3、MongoDB应用场景

它的应用场景非常广泛,存储数据、读写网站数据、文件存储、日志存储、缓存等。

从数据角度说,mongo关注是未来数据量。

从需求角度说,mongo关注是未来的拓展和维护。

4、术语

mongo从5版本对事务的支持更好,以后工作用的一定是5版本及以上的。

我们学习用4版本,是因为很多电脑安装不了5版本,受硬件影响。4版本和5版本在操作上没有什么大区别,学习不影响。

5、操作

1、安装MongoDB

基于docker的安装,版本号4.4.18

1、查询镜像文件【不操作】

docker search mongo

2、拉取镜像文件

docker pull mongo:4.4.18

3、创建数据挂载目录

mkdir -p /usr/local/docker/mongodb/datacd /usr/local/docker/mongodbchmod 777 data

4、启动容器

docker run -d \--name mongodb \--privileged \-p 27017:27017 \-v /usr/local/docker/mongodb/data:/data/db \-e MONGO_INITDB_ROOT_USERNAME=root \-e MONGO_INITDB_ROOT_PASSWORD=123456 \mongo:4.4.18 mongod --auth

看到此基就启动成功了

--privileged:以真正的有权限方式启动

MONGO_INITDB_ROOT_USERNAME:设置账户

MONGO_INITDB_ROOT_PASSWORD:设置密码

2、验证安装成功

1、命令及说明

# 1.进入容器

docker exec -it mongodb /bin/bash

# 2.查看版本

mongo --version


# 3.以root用户登录mongo,-p是密码,--port是端口号,--authenticationDatabase是验证权限的数据库
 

mongo --port 27017 -u "root" -p "123456" --authenticationDatabase "admin"  


# 4.展示所有的数据库
 

show dbs


# 5.切换到dz14b数据库

use dz14b


# 6.创建一个用户,用户名是user01,密码是123456,角色是读写角色,作用在dz14b数据库上

db.createUser({user:"user01", pwd:"123456",roles: [{role:"readWrite", db:"dz14b"}]})


# 7.查看所有的用户数据

show users


# 8.退出mongodb数据库

exit

# 9.退出mongodb容器

exit


# 10.再次进入容器,以mongo命令进入,进入到dz14b数据库中

docker exec -it mongodb mongo dz14b


# 11.查看当前在那个数据库

db

# 12.查看数据库,发现没有其他数据库,我们已经再dz14b了,所以查询不到其他数据库

show dbs


# 13.授权

db.auth("user01", "123456")

# 14.查看数据库,发现没有,授权影响不到用户的作用范围

show dbs

# 15.因为没有权限报错了

show users


# 16.向dz(dz自定义的名字)集合插入了一个文档,数据是inser方法的参数。对照sql理解:向dz表插入一条记录

db.dz.insert({name:"zhangsan"})

# 17.查询dz集合下所有的数据

db.dz.find()

【第1,2,3步骤】

【第4-9步骤】

【第10-17步骤】

3、删除用户【不操作】

1、命令及说明

# 进入docker容器
docker exec -it mongodb /bin/bash
# 以root用户登录mongo,-p是密码,--port是端口号,--authenticationDatabase是验证权限的数据库
mongo --port 27017 -u "root" -p "123456" --authenticationDatabase "admin"  
# 切换到dz12b数据库
use dz12b
# 查看所有的用户数据
show users
# 切换到admin数据库
user admin
# 授权
db.auth("root", "123456")
# 删除用户,用户信息再system.users下,remove是一个命令
db.system.users.remove({user:"user01"})
# 重新进入mongo,验证删除成功
exit
mongo --port 27017 -u "root" -p "123456" --authenticationDatabase "admin"  
use dz7b
show users

4、Navicat连接

5、insert

db.dz.insert({name:"菲菲", age:20,sex:"女"});
db.dz.insert({name:"张三",sex:"男"});
db.dz.insert({name:"王五",sex:"男",hiredate:"2024-12-14"});

db.dz.save({name:"菲菲", age:20,sex:"女"});
db.dz.save({name:"张三",sex:"男"});
db.dz.save({name:"王五",sex:"男",hiredate:"2024-12-14"});

insert和save的区别:

如果设置了id字段,id不重复二者没有区别,都是新增一条数据,如果id重复,insert会报错,save执行修改操作。

【执行insert语句同时 创建集合“表”】

db.dz.insert({_id:ObjectId("66f4b95c904baf343400254d"),name:"高波",age:20})
db.dz.save({_id:ObjectId("66f4b95c904baf343400254d"),name:"高波",age:20})

6、find

db.dz.find({age : 20} )
db.dz.find({age : {$gt : 21}})
db.dz.find({age:{$gt : 21},name:'张三'})

7、delete

db.dz.deleteOne({age:20})
db.dz.deleteMany({age:20})

deleteOne是删除按照条件查询到的第一条数据

deleteMany是删除所有符合条件的记录

8、update

db.dz.updateOne({age:25},{$set:{age:20}}
)db.dz.updateMany({age:25},{$set:{age:20}}
)

updateOne是修改按照条件查询到的第一条数据

updateMany是修改所有符合条件的记录

9、其他操作【了解】

# 查看所有数据库
show dbs
# 应用到指定数据库
use databasename
# 查看数据库下的集合
show collections
# 创建集合
db.createCollection("test_collection")
# 删除集合,test_collection是集合的名字
db.test_collection.drop()

6、SpringBoot整合

1.添加依赖

  <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version></parent><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version><jwt.version>0.7.0</jwt.version><fastjson.version>1.2.60</fastjson.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>compile</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--json--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><classifier>exec</classifier></configuration></plugin></plugins></build>

2.添加配置

#username: user01 虚拟机数据库名
#database: 自己数据库的名字
#port: 27017  虚拟机中自己定义的
#host: 192.168.146.128  虚拟机ip
spring:data:mongodb:username: user01password: '123456'port: 27017host: 192.168.146.128database: dz14b

mongodb配置有两种方式,如果第一种不生效,可以用第二种尝试一下

spring:data:mongodb:uri: mongodb://user01:123456@192.168.1.101:27017/dz12b

3.编写Entry

package com.jr.entry;import lombok.Data;
import org.springframework.data.annotation.Id;@Data
public class User {@Idprivate String id;private String name;private String password;
}

4.编写DAO

package com.jr.dao;import com.jr.entry.User;import java.util.List;public interface UserDao {/*** 新增** @param user 目标对象*/void insert(User user);/*** 删除** @param id 对象主键*/void delete(String id);/*** 修改** @param user 目标对象*/void update(User user);/*** 通过主键查询** @param id 主键* @return user对象*/User findById(String id);/*** 查询** @param user 条件对象* @return user集合*/List<User> query(User user);}

5.编写DAOImpl

MongoTemplate常用方法:

 mongoTemplate.insert(user);  //添加user对象
 mongoTemplate.findById(id, User.class);  //根据主键id,查询单个user对象。
 mongoTemplate.remove(user);  //删除指定user对象
 mongoTemplate.remove(条件对象Query, User.class);   // 删除符合条件的user对象
 mongoTemplate.updateMulti(条件对象query, 修改对象update, User.class);  //修改符合条件的user对象
 mongoTemplate.find(条件对象query, User.class);  //查询符合条件的user对象

条件对象Query常用方法:

#将构建好的查询条件添加到查询对象中
query.addCriteria(Criteria.where("_id").is(id));

Criteria常用方法:

#用于定义查询条件的接口,它提供了一系列的方法来构建复杂的查询条件。
Criteria.where("_id").is(id);

修改对象Update常用方法:

update.set("password", user.getPassword());

测试代码:

package com.jr.dao.impl;
import com.jr.dao.UserDao;
import com.jr.entry.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
import java.util.List;@Repository
public class UserDaoImpl implements UserDao {@Autowiredprivate MongoTemplate mongoTemplate;@Overridepublic void insert(User user) {mongoTemplate.insert(user);}@Overridepublic User findById(String id) {return mongoTemplate.findById(id, User.class);}//    @Overridepublic void delete1(String id) {User user = findById(id);if (user != null) {mongoTemplate.remove(user);} else {System.out.println("没有找到要删除的数据!");}}@Overridepublic void delete(String id) {Query query = new Query();query.addCriteria(Criteria.where("_id").is(id));mongoTemplate.remove(query, User.class);}@Overridepublic void update(User user) {Query query = new Query();query.addCriteria(Criteria.where("_id").is(user.getId()));Update update = new Update();update.set("name", user.getName());update.set("password", user.getPassword());mongoTemplate.updateMulti(query, update, User.class);}@Overridepublic List<User> query(User user) {Query query = new Query();if(user.getId() != null){query.addCriteria(Criteria.where("_id").is(user.getId()));}if(user.getName() != null){query.addCriteria(Criteria.where("name").is(user.getName()));}if(user.getPassword() != null){query.addCriteria(Criteria.where("password").is(user.getPassword()));}return mongoTemplate.find(query, User.class);}
}

6.编写测试类Test

package com.jr;
import com.SpringBootMain;
import com.jr.dao.UserDao;
import com.jr.entry.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@Slf4j
@SpringBootTest(classes = SpringBootMain.class)
@SuppressWarnings("all")
public class MongoDbTest {@Autowiredprivate UserDao userDao;@Testpublic void testInsert() {User user = new User();user.setPassword("123");user.setName("zhangsan");userDao.insert(user);}@Testpublic void testFindById() {User byId = userDao.findById("661794efd775ee4bd7a6d069");System.out.println(byId);}@Testpublic void testDelete() {userDao.delete("6617970547fbc57ef66a962f");}@Testpublic void testUpdate() {User user = new User();user.setId("661797ee479a0c02f0dd9212");user.setPassword("123456");user.setName("lisi");userDao.update(user);}@Testpublic void testQuery() {User user = new User();
//        user.setId("661797ee479a0c02f0dd9212");user.setPassword("123");
//        user.setName("lisi");System.out.println(userDao.query(user));}}

7.编写启动类

package com;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringBootMain {public static void main(String[] args) {SpringApplication.run(SpringBootMain.class);}
}

http://www.yayakq.cn/news/232842/

相关文章:

  • 网站制作将栏目分类商城平台推广方案
  • 网站打不开了网站的设计与实现
  • 怎么在国外网站开发客户什么软件可以找做网站的
  • 视频网站做app建筑人才市场招聘网
  • 自适应网站模板公司北京哪里有专门做网站的地方
  • 农家乐网站 建设wordpress 获取子类
  • 局域网及网站建设内容手机网站滑动效果
  • 长沙模板网站建设个人建站模板
  • 怎样优化网站排名制作网页的的网站
  • 凡科网站怎么做建站iis部署网站 红叉
  • 自己做的网站怎么放到网上去wordpress 文章 代码
  • 广东网站建设微信商城运营企业网站建设的建站前准备
  • h5做招聘网站中小企业网站建设与管理课后答案
  • 如何为产品做网站评论回复网站怎么做
  • 重庆市住房和城乡建设厅网站首页网站编程开发
  • 做网站有骗子建站工具 phpwind
  • 最好的网站代运营公司如何做电商运营
  • 上海网站制作公司多少钱wordpress教程app
  • 妇科医院手机网站源码网页qq登陆保护在哪里
  • 咸阳网站建设哪家好网站建设公司费用
  • 北京网站建设公司怎么样网站建立的研究方案
  • 怎么做自己微信的网站深圳市造价信息网
  • 招聘网站分析报告怎么做国内电商平台怎么做
  • 廊坊网站关键字优化切削工具东莞网站建设
  • 网站建设如何做好整体色彩搭配郑州中原网站建设
  • 苏州开设网站公司在什么地方软件界面设计ui培训班
  • 有什么做logo网站python培训视频教程
  • 美团网站建设规划书工程建设有限公司经营范围
  • 网站设计与网站建设个性化定制网站
  • 咸宁哪个企业没有做网站wordpress没有安装主题选项卡