mongodb学习笔记
关于mongodb
- mongodb是面向文档型的数据库
- 在mysql里面是一个个的数据表,但是在mongodb里面是一个个的集合,集合里面是一个个的文档
- 在mysql里面的数据表中是一行行的数据,但是在mongodb里面的文档中是一个对象的集合,每个对象类似一行的数据
- mongodb是以键值对的形式保存数据的
mongodb的运行
-
在mongodb的安装目录下的bin下有两个重要的程序
mongo.exe
和mongod.exe
-
其中
mongod.exe
是启动Mongodb的程序,程序启动后运行mongo.exe
,然后就可以在特定的mongodb命令行中执行指令,进行数据的增删改查 -
打开cmd,运行mongodb的启动指令: (D:/mongodb/server/data/db 自己mongodb中存放数据库的位置)
//先启动数据库 mongod --dbpath=D:/mongodb/server/data/db //再连接数据库 mongo
mongodb基础指令
常用指令
//查看已经存在的数据库
show dbs
//切换到指定的数据库(无论数据库是否存在,均可切换成功
use 数据库名称
//查看当前所在的数据库
db
//查看当前数据库下一共有哪些文档集合
db.getCollectionNames()
插入指令
//向指定的集合录入一条文档(如果集合不存在会自动创建)
//例子:db.users.insert({user:'你好',age:'18'})
db.集合名.insert(文档)
//向指定集合插入多条文档
//例子:db.users.insert([{user:'你好',age:'18'},{user:'你好',age:'18'}])
db.集合名.insert([文档1,文档2])
//插入数据的其他写法
db.集合名.insertMany([文档1,文档2])//插入多条数据
db.集合名.insertOne(文档)//插入单条数据
查询指令
//查询
db.集合名.find(条件,显示的字段)//入没有条件,则查找整个集合
db.users.find({username: '你好'})
//查询条件为数字,判断大小时
db.user.find({age: {$gt:20}})//查询条件为age>20的数据
db.user.find({age:{$lt:20}})//查询条件为小于20的数据
db.user.find({age:{$gte: 20}})//查询条件为age>=20的数据
//范围查找
db.user.find({age:{$in:[10,20]}})//查找age数值再10与20范围内的数据
//单字段多条件查找,匹配所有符合的数据
db.user.find({link:{$all:['苹果','雪梨']}})//查询user集合中link字段中包含'苹果'和'雪梨'的数据
//匹配不符合条件的数据
db.user.find({
age:{
$nin: [10,20]
}
})//查询user集合中age字段不符合条件的所有数据
//取反查询
db.user.find({
age:{
$ne:10
}
})
db.user.find({
age:{
$not:{$gt:20}
}
})//查询user集合中除age字段大于20外的所有数据的
//模糊查找
db.jobs.find({
link:{$regex:/苹/ig}
})//通过正则表达式匹配link字段中带'苹'字的数据
//多字段多条件查询
db.user.find({
age:{$gt:10},
name:{$in: ["王超"]}
})//查询同时满足年龄大于10,名字为王超的数据
//||或条件查询
db.user.find({
$or:[
{age:{$gt:10},
{name:{$in: '王超'}}
]
})//查询满足年龄大于10,或者名字为王超的数据
//固定条数查询
db.user.find().limit(5)//查询user集合中的五条数据
//跳过xx条数据查询后面的
db.user.find().skip(5).limit(5)//跳过开始的五条数据,查询后面的五条数据
//分页查询
//(page-1)*limit = 需要跳过的条数
//数据排序
//有排序条件时会先排序,再进行其余操作,比如跳过以及固定条数查询
db.user.find().skip(10).limit(5).sort({id:1})//id为需要排序的字段名,它的值为1时排序为正序,它的值为-1时排序为倒序
修改指令
db.user.update({name:'王超'},{$set:{age: 99}})
//update方法,有两个参数,第一个时需要修改的条件,第二个时满足条件后修改的字段及内容
//字段自增自减修改
db.users.update({name:'王超'},{$inc:{age:2}})//修改满足name为王超的数据中的age字段值为2,为负债时为自减
//删除某个字段的值
db.user.update({name:'王超'},{$unset:{height:1}})//删除name字段值为王超的数据中height字段的值
//数组字段添加数据
db.user.update({name: '王超'},{$push:{link:'爱好'}})//在name值为王超的数据中的类型为数组的link字段添加值为‘爱好’
//数组字段删除数据
db.user.update({name: '王超'},{$pop:{link:1/-1}})//在name值为王超的数据中的类型为数组的link字段删除一个值,为1时删除第一个,为-1时删除最后一个
//数组字段指定删除元素
db.user.update({name: '王超'},{$pull:{link:'爱好'}})//在name值为王超的数据中的类型为数组的link字段删除一个固定值‘爱好’
删除指令
//删除一整条数据
db.user.remove({name:'王超'})//删除所有name字段值为王超的所有数据
//删除一条数据
db.user.remove({age:10},{justOne:true})//删除name字段值为王超的的集合中的第一条数据