1.安装
2.测试使用
3.将mongod作为服务
以上内容都不讲 QAQ
4.MongoDB的概念
1)建库:
一个mongodb中可以建立多个数据库
mongodb的单个实例中可以容纳多个独立的数据库
2)文档:
文档是mongodb中最核心的概念,是其核心单元
将文档类比成关系数据库中的每一行数据
多个键及其关联的值有序的放置在一起就是文档
需要注意的是:
a)文档中的键/值对是有序的
b)文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型
c)mongoDB区分类型和大小写
d)mongoDB的文档不能有重复的键
e)文档的键是字符串,键可以使用任意UTF-8字符
3)集合:
集合是一组文档的组合,如果将文档类比成关系数据库中的行,那么集合就可以类比成数据库的表
在mongoDB中的集合是无模式的,也就是说集合中所存储的文档的结构可以是不同的
4)mongoDB的数据类型:
5.mongoDB的使用
1)在终端中启动
a)指定数据库地址,建库
mongod --dbpath=数据库地址(一个空的文件夹即可)
b)启动数据库,在终端中输入
mongo
进入交互模式
c)数据库启动后可以通过可视化工具进行管理
推荐Robo 3T
2)操作mongodb
a)创建数据库 ,datebase_name是你要创建数据库的名字,可以根据你的喜好创~
use datebase_name
如果数据库不存在,则创建数据库。如果存在,则切换到该数据库
b)查看所有的数据库
show dbs
没有显示我们刚创建的数据库datebase_name,只有自动生成的几个库
不要惊慌
因为数据库中没有数据,所以没有显示,我们向其中插入一条数据
db.datebase_name.insert({name:"zhangsan",age:20})
然后再使用show dbs 即可显示
c)查看当前使用的数据库
db
d)删除数据库
db.dropDatabase()
e)断开连接
exit
居然还会说bye
f)查看命令api
help
3)操作集合
a)查看帮助api
db.worker.help()
b)创建集合(collection) bbb
db.createCollection("bbb")
c)查看当前数据库下有哪些集合(collection)
show collections
d)删除当前数据库中的集合(collection)
db.bbb.drop()
4)操作文档
a)插入文档:
使用insert()插入文档
db.bbb.insert({name:"bbb",age:6})
插入多个文档
db.bbb.insert([{name:"lisi",age:5},{name:"wangwu",age:4}])
使用save()插入文档
如果不指定_id字段,save()类似于insert()方法。
db.bbb.save({name:"sb",age:100})
如果指定_id字段,则会该_id的数据。
db.bbb.save({_id:ObjectId("123456789123456789123456"),name:"lili",age:22})
在这里需要注意的是,ObjectId只能是24位,不能多也不能少,使用16进制。
因为ObjectId 使用12 字节的存储空间,每个字节两位十六进制数字,是一个24 位的字符串
b)更新文档
使用update()更新已存在的文档
将name为sb的数据的name修改为dasb
如果有多条数据为sb,则只修改第一条
db.bbb.update({name:"sb"},{$set:{name:"dasb"}})
将name为dasb的数据的age修改为10,multi:true的意思为如果有多条数据,则全部修改。multi默认为false,即只修改第一条数据
db.bbb.update({name:"dasb"},{$set:{age:10}},{multi:true})
将name为dasb的数据的age在原本的基础上+2
db.bbb.update({name:"dasb"},{$inc:{age:2}})
使用save()通过传入的来替换已有的文档
当这里ObjectId和已存在的数据ObjectId相同时,则覆盖原有的数据
db.bbb.save({_id:ObjectId("123456789123456789123456"),name:"dada",age:5})
c)删除文档
remove()方法用于移除集合中的数据
db.bbb.remove({name:"dasb"})
删除bbb集合中所有name为dasb的数据
db.bbb.remove({name:"lisi"},1)
删除bbb集合中name为lisi的第一条数据
d)查询文档
使用find()方法查询文档
查询bbb下所有的document数据
db.bbb.find()
查询bbb下age为4的document数据
db.bbb.find({age:4})
使用find()方法查询指定列
查询bbb下age为4的document数据,age:1表示只显示它的age
db.bbb.find({age:4},{age:1})
使用pretty()方法;以格式化的方式来显示所有文档
db.bbb.find().pretty()
使用findOne()方法匹配结果第一条数据
db.bbb.findOne({name:"dada"})
e)查询操作符
条件操作符用于比较两个表达式并从mongoDB集合中获取数据
① ‘>’操作符 使用 $gt
例如查找bbb中age大于的数据
db.bbb.find({age:{$gt:5}})
②‘>=’操作符 使用 $gte
例如查找bbb中age大于等于5的数据
db.bbb.find({age:{$gte:5}})
③‘<’操作符 使用 $lt
例如查找bbb中age小于5的数据
db.bbb.find({age:{$lt:5}})
④‘<=’操作符 使用 $lte
例如查找bbb中age小于等于5的数据
db.bbb.find({age:{$lte:5}})
⑤‘>=’且 ‘>=’操作符 使用 $gte 和 $lte
例如查找bbb中age大于等于4小于等于6的数据
db.bbb.find({age:{$gte:4,$lte:6}})
⑥‘==’操作符 使用 ==
例如查找bbb中age等于5的数据
db.bbb.find({age:5})
⑦ 使用_id进行查询
例如查找bbb中_id为123456789123456789123456的数据
db.bbb.find({_id:ObjectId("123456789123456789123456")})
⑧ 查询某个结果数据的条数
例如查找bbb中age等于5的数据的数量
db.bbb.find({age:5}).count()
⑨ 查询某个字段的值中是否包含另一个值
例如查找bbb中name中包含da的数据
db.bbb.find({name:/da/})
⑩ 查询某个字段是否以另一个值开头
例如查找bbb中name以d开头的数据
db.bbb.find({name:/^d/})
f)查询条件and 和 or
① and条件
mongoDB的find()方法可以传入多个键,每个键以逗号隔开
例如查询name为ccc并且age为5的数据
db.bbb.find({name:"ccc",age:5})
② or条件
例如查询age为4或者age为5的数据
db.bbb.find({$or:[{age : 4} , {age : 5}]})
③and 和 or 联合使用
查询name为ccc并且age是4 或者age是5的数据
db.bbb.find({name:"ccc", $or:[{age:4},{age:5}]})
g)limit和skip方法
①limit()方法,读取指定数量的数据记录
例如查询前三条数据
db.bbb.find().limit(3)
②skip()方法,跳过指定数量的数据
例如查询第三条数据之后的数据
db.bbb.find().skip(3)
③skip()方法和limit()方法混合使用
用这种方式完成分页
先跳过3条数据,然后再取出两条数据
db.bbb.find().skip(3).limit(2)
h)排序
sort()方法可以通过参数指定排序的字段,使用1和-1来指定排序的方式,1为升序排序,-1为降序排序
例如根据age进行升序排序
db.bbb.find().sort({age:1})
完结撒花(。・∀・)ノ