初识MongoDB数据库

一、初识MongoDB数据库

***启动MongoDB

启动:mongod --dbpath D:\MongoDB\data
连接:mongo

1.MongoDB和数据库的区别

SQL						MongoDB					解释说明
table					collection				数据库表/集合
row						document				数据记录行/文档
column					field					数据字段/域
index					index					索引
primary key				 primary key			 主键

2.MongoDB内置的三个数据库

admin:从权限的角度来看,这就是root数据库,要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
local:这个数据库的数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config:当MongoDB用于分片设置时,config数据库在内部使用

二、MongoDB基本操作

1.操作MongoDB数据库

1.创建数据库
	语法:use 数据库名
	注意:如果数据库不存在,则创建数据库,当数据库里没有东西的时候,则在show dbs的时候,是不会显示这个数据库的
	插入数据:进入数据库,执行(db.student.insert({name:'jxk',age:18,sex:'男',isdelete:0}))
	其中student代表文档名,相当于mysql里的表名
2.删除数据库
	前提:使用当前数据库
	db.dropDatabase()
3.查看所有数据库
	show dbs
4.查看正在使用的数据库
	1.db
	2.db.getName()
5.断开连接
	exit

2.集合操作

1.查看当前数据库下的有哪些集合
	show collections
2.创建集合
	方法1.
		  语法:db.createCollection("集合名")
		  示例:db.createCollection("class")
	方法2.
		  语法:db.集合名.insert(文档)
		  示例:db.class.insert({name:'姜新科',age:20})
3.删除当前数据库里的集合
	语法:db.集合名.drop()

3.文档操作

(1)插入文档
方法1:使用insert()方法插入文档
		语法1:db.集合名.insert(文档)
		插入一个:db.student.insert({name:'zjx',age:20,sex:'男',isdelete:0})
		语法2:db.集合名.insert([文档1,文档2,....])
		插入多个:db.student.insert([{name:'韩梅梅',age:20,sex:'女',isdelete:0},{name:'李阳',age:28,sex:'男',isdelete:0}])
		
方法2:使用save()方法插入文档
		语法:db.集合名.save(文档)
		说明:如果不指定_id字段,save就和insert方法一样,如果指定_id字段,就和更新_id字段的数据
		示例:db.student.save({_id:ObjectId("5b987e45ea0980a1079ee1a6"),name:'李阳',age:28,sex:'男',isdelete:0})
(2)文档更新
1.update() 用于更新已存在的文档
		语法:
		db.集合名.update(
			query,
			update,
			{
                upset:<boolean>,
                multi:<boolean>,
                writeConcern:<文档>,
			}
		)
		参数说明:
		query:update的查询条件,类似与mysql里update语句内wehere后面的内容
		update:update的对象和一些更新的操作符($set,$inc)等,$set直接更新,$inc在原有的基础上累加后更新
		upset:可写可不写,如果不存在update的记录,问你是否当新数据插入,true为插入,flase为不插入
		multi:可写可不写,默认是false,只更新找到的第一条记录,如果值为true,则全部更新
		writeConcern:可写可不写,抛出异常的级别
		
		需求:将jxk的年龄更改为25
		代码:db.student.update({name:"jxk"},{$set:{age:25}})
			
			db.student.update({name:"jxk"},{$inc:{age:20}}) 会在age原有数据基础上加上20
			
			db.student.update({name:"zjx"},{$set:{age:20}},{multi:true}) 更改所有
	
2.save() 通过传入的文档替换已有的文档
	    语法:db.集合名.save(
			document,
			{
                writeCoencern:<docment>
			}
		)
		示例:db.student.save({_id:ObjectId("5b987e45ea0980a1079ee1a6"),name:'李阳',age:28,sex:'男',isdelete:0})
(3)文档删除
说明:在执行remove()函数之前,先执行find()命令来判断执行的条件是否存在是一个良好的习惯

语法:
	db.集合名.remove(
		query,
		{
            justOne:<boolean>
            writeConcern:<docment>
		}
	)
	参数说明:
		query 可写可不写,删除文档的条件,不写则删除全部
		justONe:可写可不写,true只删除一个文档,默认是false
需求1:删除name为aaa的
代码:db.student.remove({name:"aaa"})

需求2:删除name为zjx的,并且删除第一个
代码:db.student.remove({name:"zjx"},{justOne:true})
(4)文档查询
1.find()方法1
	db.集合名.find()  查询集合中的所有文档
2.find()方法2
	语法:db.集合名.find(
		query,
		{
            <key>:1,
            <key>:1
		}
	)
	参数说明:
		query:查询条件
		key:要显示的字段,1表示显示
	示例:db.student.find({isdelete:0},{name:1,age:1})
3.pretty() 以格式化的方法显示文档
	示例:db.student.find().pretty()
4.findOne() 查询匹配结果的第一条数据
	示例:db.student.findOne({isdelete:0})
(5)查询条件操作符
作用:条件操作符用于比较两个表达式并从MongoDB集合中获取数据
a.大于 - $gt
	语法:db.集合名.find({<key>:{$gt:<value>}})
	示例:db.student.find({age:{$gt:20})
b.大于等于 - $gte
	示例:db.student.find({age:{$gte:20}})
c.小于 - $lt
	示例:db.student.find({age:{$lt:30}})
d.小于等于 - $lte
	示例:db.student.find({age:{$lte:30}})
e.大于和小于
	示例:db.student.find({age:{$gt:20,$lt:40}})
e.等于
	示例:db.student.find({age:40})
f.不等于 - $ne
	示例:db.student.find({age:{$ne:30}})
f.使用_id进行查询
	示例:db.student.find({"_id":ObjectId("id值")})
g.查询某个结果集的数据条数count()
	示例:db.student.find().count()
h.查询某个字段的值当中是否包含另一个值
	示例:db.student.find({name:/k/})
i.查询某个字段的值是否以另一个值开头
	示例:db.student.find({name:/^z/})
(6)条件查询and 和 or
a.AND条件
	语法:db.集合名.find({条件1,条件2....})
	示例:db.student.find({isdelete:0,age:{$lt:40}})
b.OR条件 
	语法:db.集合名.find(
		{
            $or:[{条件1},{条件2}...]
		}
	)
	示例:db.student.find({$or:[{age:20},{age:30}]})
c.AND和OR联合使用
	语法:
	db.集合名.find(
		{
            条件1,
            条件2,
            $or:[{条件1},{条件2}]
		}
	)
	需求:要求年龄等于20并且isdelete=1,或者年龄为30的
	代码:db.student.find({$or:[{age:20,isdelete:1},{age:30}]})
(7)limit、skip
a.limit():指定读取的数量
	db.student.find().limit(2) -只读取两条
b.skip():跳过指定的条数,读取后面的数据
	db.student.find().skip(2)
c.limit和skip结合使用 -- 实现分页功能
	db.student.find().limit(2)
	db.student.find().skip(2).limit(2)
	db.student.find().skip(4).limit(2)
(8)排序
语法:db.集合名.find().sort({<key>:1|-1}) -- 1升序,-1降序
示例:db.student.find().sort({age:1})

猜你喜欢

转载自blog.csdn.net/qq_38953577/article/details/93735453