mongoDB的使用

61 阅读3分钟

MongoDB基础:

以JSON为主格式,自由

MySQL的SQL语句是关系型数据库通用的

Mongo是非关系型

安装&启动mongo

1、解压代老师提供的mongodb-win32-x86_64-2008plus-ssl-3.6.11.zip文件

2、解压好了进入到bin文件夹:mongo.exe(客户端) 和 mongod.exe(服务器端)

3、如何启动:

  • 在当前bin文件夹打开命令行cmd或powershell都可以,但是路径千万不能有中文,输入:.\mongod.exe --dbpath=你想要的绝对路径地址 - 服务器启动成功

  • 服务器开好,千万不要关闭

  • 再打开一个命令行,输入:.\mongo.exe - 再打开上一个服务器命令行看看是否连接成功 - 客户端开启成功//操作数据库

mongo语法:- 目前都是在客户端的命令行里面使用

数据库操作:

  • 查询数据库:show dbs
  • 创建/切换数据库:use 数据库名称; - 如果是一个空的数据库,show dbs是查看不到的,至少要创建一个表才能看到
  • 查看当前选中的数据库:db
  • 创建数据表:db.createCollection("表名");
  • 删除数据库:db.dropDatabase() - 能忘了就忘了,会坐牢

数据表操作:

  • 创建数据表:db.createCollection("表名",{size:5242880,capped:true,max:5000}); - 第二个参数限制操作,最大存储空间为5M,最多为5000条数据 - 个人不推荐做限制
  • 查看目前所有的数据表:db.getCollectionNames();
  • 删除数据表:db.表名.drop();

数据操作:

  • 增:db.表名.save({属性名:属性值,....}) - 一次只能插入一条数据 - 注册

举例:db.users.save({name:"hjf",age:18,pwd:"123123",email:"hjf@qq.com",vip:"0"})

db.表名.save([{},{},{},...]) - 一次只能插入一条数据

个人建议:键名要统一

  • 删:db.表名.remove({键值对}) - 注销账号

    举例: db.表名.remove({username:"lr"})

  • 改:db.表名.update({条件},{要改的新内容}) - 修改密码

举例:

db.表名.update({name:"paoge",pwd:"666666"},{age:17}) - 这句话会把名字为paoge和密码为666666的替换为只剩age为17

db.表名.update({name:"paoge",pwd:"666666"},{$set:{age:17}}) - 仅仅只修改了age

  • 查:db.表名.find({}) - 所有的

db.表名.find({age:18}) - 找到所有年龄为18的数据

db.表名.find({age:{$gte:18}})- 找到所有年龄大于等于18的数据

db.表名.find({name:/正则/})- 甚至可以写入正则来进行模糊查询

db.表名.find({},{name:1,age:1})- 只需要name和age,其他的不要,1和0相当于是开关 - 我们登陆时只需要判断用户名和密码是否正确

db.表名.find().sort({age:1}) - 按照age升序排列,降序的话换为-1

db.表名.find().skip(0).limit(2) - 跳过前0条,再拿2条,可以理解为前两条;

db.表名.find().count() - 获取此表有多少条数据

安装一个mongoDB图形化界面:更美观,更方便 - 主要用于看

安装mongodb-compass-1.33.1-win32-x64.exe

node.js和mongoDB

1、安装mongoose第三方模块

使用步骤:

引入:const mongoose = require('mongoose');

连接数据库:mongoose.connect('mongodb://127.0.0.1/数据库名称');

创建新数据表,设置数据类型的控制

防止报错,这部分封装到自定义模板中,再公开

                    var userSchema=mongoose.Schema({
			name:String,
			age:Number,
			pwd:String,
			email:String,
			vip:String
		})
				//模型名首字母大写			//数据表名

                var 模型名=mongoose.model("Users",userSchema,"users");

SQL语句

增:

				var user=new 模型名({
					name:"dy1",
					age:"abc",
					pwd:"123123",
					email:"dy1@qq.com",
					vip:"0"
				})
				user.save((err)=>{
					console.log(err);//错误提示对象,null说明没有错误
					//插入完毕后要干什么在这里写代码
				})

删:

				模型名.deleteOne/deleteMany({条件},(err)=>{
					//删除完毕后要干什么在这里写代码
				})

改:

				模型名.updateOne/updateMany({条件},{新内容},(err)=>{
					//修改完毕后要干什么在这里写代码
				})

查:- 重点

				模型名.find({条件},(err,result)=>{
					result;//查询到数据库中的东西
				})

特殊 .find().skip().limit().then((data)={})