Mongodb_4.2

windows安装Mongodb

	官网下载:https://www.mongodb.com/download-center/community?jmp=nav

配置系统环境

	path	x:\xxxxxxxxx\MongoDB\Server\4.2.5\bin

开启服务器

	mongod 	--dbpath  存储数据库路径 	[--port 端口号]

配置开机自动开启

(1)、修改配置文件(在4版本之前需要创建配置文件)
	cd   		x:\xxxxxxxxx\MongoDB\Server\4.2.5\bin  
	mkdir   mongod.cfg			# 创建mongod.cfg文件
	systemLog:
			destination: file
			path: d:\nosql\log\mongod.log		# 更改日志而文件路径
	storage:
			dbpath: d:\nosql\data\db			# 更改数据存储路径
(2)、修改文件文件路径(在4版本之前需要修改)
sc.exe create MongoDB 
		binPath= "\"D:\MongoDB\Server\4.2\bin\mongod.exe\" --service 
				  --config=\"D:\MongoDB\Server\4.2\mongod.cfg\"" 
		DisplayName= "MongoDB" start= "auto"
			
sc.exe create MongoDB 
		binPath= "\"mongod的bin目录\mongod.exe\" --service 
				  --config=\"mongo的安装目录\mongod.cfg\"" 
		DisplayName= "MongoDB" start= "auto"
(3)、启动MongoDB
	打开服务器----->启动Mongodb

CRUD

1、添加
	db.collection.insert()		# 向集合中插入一个或多个文档
	db.collection.insertOne()	# 向集合中插入一个文档
	db.collection.insertMany()	# 向集合中插入多个文档
	
# 例如:
	db.student.insertMany([
		    {"name": "李四", "age": "23", "gender": "man"},
		    {"name": "赵四", "age": "56", "gender": "man"},
		    {"name": "田七", "age": "12", "gender": "woman"}
		])
2、删除
	db.collection.remove( 条件, boolean )	# 删除集合中的一个或多个文档(默认删除多个)
	db.collection.deleteOne()				# 删除集合中的一个文档
	db.collection.deleteMany()				# 删除集合中的多个文档
	
# 例如:
	(1)、db.Student.remove({ name: "李四" })				# 删除复合条件的文档
	
	(2)、db.Student.remove({ name: "李四" }, true)		# 删除复合条件的第一个文档
	
	(3)、db.Student.remove({})							# 删除集合
	
	(4)、db.Student.drop()								# 删除集合
	
	(5)、db.Student.dropDatabase({ name: "李四" })		# 删除数据库
3、修改
	db.collection.update( 查询条件, 新增对象, [条件] )	# 可以修改、替换集合中的一个或多个文档
	db.collection.updateMany( 查询条件, 新增对象 )		# 修改集合中的多个文档
	db.collection.updateOne(  查询条件, 新增对象 )		# 修改集合中的一个文档
	db.collection.replaceOne( 查询条件, 替换对象 )		# 替换集合中的一个文档
	
# 例如:
	(1)、db.Student.update(				# 修改集合中的第一个对象的值
			{ name: "李四" },			# 查询条件
			{ $set: { name: "王五" }}	# 修改指定的元素
		)
	(2)、db.Student.update(				# 修改集合中的所有文档的属性
			{ name: "李四" },			# 查询条件
			{ $set: { name: "王五"}},	# 修改指定文档的属性
			{ multi: true }				# 是否允许修改多个
		)
	(3)、db.Student.updateMany(			# 修改集合中的复合条件,所有文档
			{ name: "李四" },			# 查询条件
			{ $unset: { name: "王五"}}	# 删除指定的文档属性
		)	
	(4)、db.Student.replaceOne(			# 替换文档的属性
			{ name: "李四" },			# 查询条件
			{ name: "王五" }				# 将条件查询到的文档,的name 替换成 “王五”
		)
	(5)、db.Student.update(				# 添加文档的属性
			{ name: "李四" },			# 查询条件
			{ $set: { hobby: {movies: ["game","swing"]}}	# 给指定条件的文档属性添加元素
		)
	(6)、db.Student.update(				# 添加文档的属性
			{ name: "李四" },			# 查询条件
			{ $push: { hobby.movies: "game" }}		# 向文档的数组属性中添加元素 (存在则覆盖 )
		)
	(7)、db.Student.update(				# 添加文档的属性
			{ name: "李四" },			# 查询条件
			{ $addToSet: { hobby.movies: "game" }}	# 向文档的数组属性中添加元素 (存在则不添加)
		)
4、查询
	 db.collection.find()				# 查询所有符合条件的文档	- 返回的是一个数组
	 db.collection.findOne()			# 查询第一个符合条件的文档	- 返回的是一个对象
	 db.collection.find().count()		# 查询符合条件的文档的数量
# 例如:
	 (1)、db.Student.find()					# 查询所有
		 
	 (2)、db.Student.find({ name: "李四", age: 26 })		# 查询 name 和 age条件
	
	 (3)、db.Student.find({ name: "lisi"})[1]			# 查询名为 lisi 的第二个文档
	 
	 (4)、db.Student.find({ age: { $lt: 30})			# 查询 age < 30 的文档
	
	 (5)、db.Student.find({ $or: [{age: {$lt: 30 }}, {$sal: {$gt: 2500}})	# 查询 age < 30 ,且sal > 2500 的文档
	 
	 (6)、db.Student.find({ age: { $lte: 5 })	# 查询 age 的前5条数据

	 (7)、db.Student.find({ age: { $lte: 5 })	# 查询 age 的前5条数据
		eq: "等于", gt: "大于", lt: "小于", lte: "前面部分"	
	 
	 (8)、db.Student.find().limit(10)  				# 查询所有的文档, 且只显示10条数据
	
	 (9)、db.Student.find().skip( 10 ).limit( 5 )  	# 查询所有的文档, 且从第 10 条开始, 且只显示 5 条数据
	 (10)、db.Student.find().sort( { name: 1 } )	# 查询所有的文档, 且按name升序排序
	 (11)、db.Student.find().sort( { name: 1, age: -1 } )	# 查询所有的文档, 且按name升序排序, 若name字段相同, 则再按age降序排序
	 	1: "升序", 	-1: "降序"
	 (12)db.Student.find({},{ name: 1, age: 0 });	# 查询所有的文档, 且显示name元素,不显示age元素
	 	1: "显示", 	0: "不显示"

Mongoose( 对象文档模型 - ODM )

(1)、连接Mongoose数据库( https://mongoosejs.com/)
<!-- 1、下载Mongoose -->
	npm	i mongoose	--save
	
<!-- 2、在项目中引用 Mongoose -->
	var mongoose = require("mongoose");
	
<!-- 3、连接Mongodb数据库, 且会创建数据库-->
	mongoose.connect('mongodb://主机IP/主机名: 端口号/ 数据库名', {useMongoClient: true });
	mongoose.connect('mongodb://localhost:27017/ student', {useNewUrlParser: true, useUnifiedTopology: true});
	
<!-- 4、测试是否Mongodb数据库是否连接(不是必须的)-->
	mongoose.connection.once("open", funtiong(){})		// 数据库连接成功的事件
	mongoose.disconnect();		// 断开数据库连接 (一般不用)
	mongoose.connection.once("close", funtiong(){})		// 数据库断开的事件
(2)、使用Mongoose数据库 ( https://mongoosejs.com —> doc —> API —>Modle)
	<!--  1、 创建Schema(模式)对象: 创建数据库的字段约束 -->
	  var mongoose = require('mongoose');		# 导入mongoose对象
	  var Schema = mongoose.Schema;		
	
	  var blogSchema = new Schema({			# 创建Schema(模式)对象 
		    name:  String, 
		    age: int,
		    gender: {
		    	type: String,
		    	default: "woman"	# 设置默认值
		    },
		    address: String
	  });
	  
	  
	<!--  2、 创建Modlel: 实现数据库映射 (: Mongoose会自动将数据库名转化为复数) -->
	  var stuModel = mongoose.model('student', blogSchema);	// 参数一:数据库名,  参数二: Schema对象
	

	<!--  3CRUD操作 -->


	<!-- 添加 -->
	stuModel.create([
	{
		name: "张三",
		age: 18,
		gender: "woman",
		address: "南昌"
	},
	{
		name: "李四",
		age: 23,
		gender: "man",
		address: "上海"
	},
	]{,function(err,docs){})			// 参数一:添加的属性, 参数二: 回调函数


	<!-- 查询: -->
	// 参数一: 条件, 
	// 参数二:显示的属性加上表示显示,不写或再前面加上”-“表示不显示。------可以是对象,字符串
	// 参数三:
	// 参数四:回调函数 (返回一个数组,若想获取该值,必须使用回调函数的参数docs)
	stuModel.find({name: "李四"},"name age -_id",function(err,docs){		
		if(!err){
			return docs[0].name;	// 返回第一个文档
		}
	})		//返回一数组
	stuModel.findOne()			// 用法同上,唯有不同之处是返回一个对象
	Model.findById()			//更具id,返回一个对象
	

	<!-- 修改: --->
	// 参数一: 条件, 
	// 参数二:修改的参数
	// 参数三:回调函数 可选
	stuModel.update({name: "李四"},{$set:{age:20}})		
	stuModel.updateMany()	
	stuModel.updateOne()			



	<!-- 删除: --->
	// 参数一: 条件, 
	// 参数二:回调函数(可选)
	stuModel.remove({name: "李四"})		
	stuModel.deleteOne()		
	Model.delteMany()			
	///其他方法详细见文档( https://mongoosejs.com	--->  doc ---> API --->Modle)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值