mongo

76 阅读4分钟

mongo就是基于json的数据库:json就是JavaScript Object Notation - JS的一部分,所以用法和JS的用法都很像,都是用.去做操作 1、安装&启动: 1、解压我提供的mongodb-win32-x86_64-2008plus-ssl-3.6.11.zip文件 2、打开bin文件夹,里面有:mongo.exe(客户端) 和 mongod.exe(服务器端) 3、如何启动: 在bin文件夹中打开cmd:输入:.\mongod.exe --dbpath=你想要保存的绝对文件夹路径 - 服务器开启成功,而且那个文件夹就是保存着你以后要存储的所有的数据 千万不要关闭mongo服务器端的cmd 再打开一个cmd:输入:.\mongo.exe - 再上一个cmd可以查看我们是否连接成功 - 客户端开启成功

2、mongo的语法:都是在客户端cmd输入 1、数据库的操作 1、查询所有数据库:show dbs 2、创建/切割数据库:没有就创建,有了就切换:use 数据库名称 3、查看当前选中的数据库:db 4、创建数据表:db.createCollection("表名");- 没有限制,无限,一定要先创建数据表后,我们才能查看到自己创建的数据库 5、删除数据库:db.dropDatabase(); - 一旦删除就不能恢复,不推荐,因为要坐牢,最好忘记

2、数据表的操作
	1、创建数据表:db.createCollection("表名",{size:5242880,capped:true,max:5000}); - 最大存储空间为5mb,最多存储5000个,意味着这个数据表做了限制,不推荐
	2、查看目前所有的数据表:db.getCollectionNames();
	3、删除数据表:db.表名.drop(); - 一旦删除就不能恢复,不推荐

3、*****数据的操作
	1、增:db.表名.save({键值对,...}) - 一次只能插入一条数据
		db.表名.save([{},{},{},{},....]) - 一次插入多条数据
		举例:db.user.save({name:"paoge",pwd:"123123",age:18,email:"pg@qq.com",vip:1})
		          db.user.save([{name:"hujiayuan",pwd:"333333",age:17,email:"hjy@qq.com",vip:0},{name:"luohongliang",pwd:"666666",age:16,email:"lhl@qq.com",vip:0},{name:"zhaoxiao",pwd:"999999",age:64,email:"zx@qq.com",vip:1}])

	2、删:db.表名.remove({}) - 不推荐,删除数据库中所有的数据
		db.表名.remove({条件}) - 条件依然也是键值对,比如: db.user.remove({name:"paoge1"}) - 会删除数据表中name叫做paoge1的所有数据

	3、改:db.表名.update({条件},{$set:{新内容}})
		举例:db.user.update({name:"zhaoxiao"},{$set:{age:65,pwd:"222222"}})

	4、查:db.表名.find(); - 找所有
		db.表名.find({pwd:"666666"}); - 找到所有密码为666666的数据
		db.表名.find({},{name:1,pwd:1}); - 找到所有的数据,但是只返回name和pwd(登录!)
		db.表名.find().sort({age:1}); - 按age升序排列!
		db.表名.find({age:{$gte:18}}) - 拿到所有age大于等于18的数据,gt大于 gte大于等于 lt小于  lte小于等于(获取成年人)
		db.表名.find({name:/o/}) - 甚至可以用正则(模糊查询)
		db.表名.find().skip(5).limit(5) - 跳过前5条,在拿5条数据,理解为5-10条数据(点击分页条应该拿到哪些数据)
		db.表名.find().count() - 获取到此表有多少条数据(做出分页条)

3、安装mongDBCompass软件:图形化界面,直观、好看、方便 - 仅仅用于我们方便查看


4、Node.js操作mongoDB - Node.js官方并没有提供过操作数据库的API 1、安装第三方模块:mongoose

2、使用步骤:
	1、引入:var mongoose=require("mongoose");
	2、连接数据库:mongoose.connect("mongodb://127.0.0.1/h52302");
	3、创建出一个新的数据表的同时,设置数据类型的控制,防止用户乱输
		var UserSchema=mongoose.Schema({
			name:String,
			pwd:String,
			age:Number,
			email:String,
			vip:String
		})
		//		模型名随意的        数据的控制         表名,没有则为创建,有了则为选中!
		var User=mongoose.model("User",UserSchema,"user")


	4、增:21、创建要插入的对象
		var x=new User({
			name:"袍哥1",
			pwd:"123456",
			age:"123",
			email:"pg@qq.com",
			vip:"1"
		})
		2、创建好的对象插入到数据表中
		x.save().then(()=>{
			console.log("插入完毕了,你要干什么,必须放在这个里面,因为他也是异步")
		})

	5、删:
		User.deleteOne/deleteMany({条件}).then(()=>{
			console.log("删除完毕了,你要干什么,必须放在这个里面,因为他也是异步")
		})

	6、改:
		User.updateOne/updateMany({条件}).then(()=>{
			console.log("修改完毕了,你要干什么,必须放在这个里面,因为他也是异步")
		})

	7、查:
		User.find({条件}).then((rs)=>{
			rs->查询到的数据
		})
	
	条件的写法和上午的写法是一模一样的!

	目前:前端能传到后端的技术,只有一个:form表单,action属性可以随便自定义一个路由名称,后端解析此路由就可以通过Object.query.键名得到前端传来的东西