MongoDB介绍
MongoDB是文档数据库,主要存储类似json的bson格式的数据。
文档:相当于关系型数据库的一行数据
集合:文档的集合,相当于关系型数据库的一个表
配置MangoDB步骤
1.在合适的目录下创建data、data/db(你指定的mongodb服务的目录)、data/log
2.进入安装路径的bin目录下,执行 "mongod.exe --dbpath=<你指定的mongodb服务的目录>" 启动数据库服务
3.进入安装路径的bin目录下,执行mongo.exe,进入连接mongodb的客户端(也可以使用mongochef可视化工具连接)
操作mongodb数据库
1.创建数据库
use <数据库名称>
注意:如果不存在该数据库则创建并切换到该数据库,否则切换到指定数据库。
示例:db.student.insert({name:"tom", age:18, gender:1, address:"北京", isDelete:0})
只有先插入一条数据后,show dbs命令才能显示新创建的数据库。该语句会自动创建出student集合。
2.删除mydb数据库
use mydb //先切换为当前库
db.dropDatabase() //删除当前库
3.查看所有库
show dbs
4.查看当前正在使用的数据库
db或db.getName()
5.断开连接
exit
help//查看命令帮助
集合操作
1.查看集合
show collections
2.创建集合
db.createCollection("<集合名>") 或 db.<集合名>.insert(<文档内容>)
示例:db.createCollection("myCollection") 或 db.student.insert({name:"tom", age:18, gender:1, address:"北京", isDelete:0})
区别:方式一创建一个空集合,方式二创建空集合并添加文档内容。
3.删除集合
db.<集合名>.drop()
示例:db.myCollection.drop()
文档操作
1.插入文档
a.使用insert()方法插入文档
db.<集合名>.insert(<文档内容>)
db.<集合名>.insert([<文档1>, <文档2>, ..., <文档N>])
示例:db.student.insert([{name:"tom", age:18, gender:1, address:"北京", isDelete:0}, {name:"hanmeimei", age:17, gender:0, address:"上海", isDelete:0}])
b.使用save()方法插入文档
db.<集合名>.save(<文档内容>)
说明:如果不指定_id字段,save()与insert()功能相同。如果指定_id字段,则会更新_id字段的数据。
示例:db.student.save({name:"tom", age:18, gender:1, address:"北京", isDelete:0})
db.student.save({_id:ObjectId("59950962019723fe2a0d8d17"), name:"tom", age:18, gender:1, address:"北京", isDelete:0})
2.更新文档
a.update()方法用于更新已存在的文档
db.<集合名>.update(
<查询条件>,
<操作符和更新对象>,
{
upset:<boolean>,
multi:<boolean>,
writeConcern:<document>
}
)
查询条件:update的查询条件,类似sql中update语句后的where子句
操作符和更新对象:操作符包括$set,$inc等,$set直接更新,$inc在原值基础上累加后更新
upset:可选,如果不存在update的记录,是否作为新数据插入,true为插入,false不插入,默认false
multi:可选,默认false,只更新找到的第一条记录,true则更新查询的所有记录
writeConcern:可选,抛出异常的级别
示例:
db.student.update({name:"lilei"},{$set:{age:25}})
db.student.update({name:"lilei"},{$inc:{age:25}})
db.student.update({name:"poi"},{$set:{age:25}},{multi:true})
b.save()方法通过传入的文档替换已有文档
db.<集合名>.save(
<document>,
{
writeConcern:<document>
}
)
<document>:文档数据
<writeConcern>:可选,抛出异常的级别
3.删除文档
在执行remove()函数前,先执行find()命令来判断执行的条件是否存在是一个良好的习惯。
db.<集合名>.remove(
<查询条件>,
{
justOne:<boolean>,
writeConcern:<document>
}
)
示例:
db.student.remove({name:"tom"})
db.student.remove({name:"poi"},{justOne:true})
4.查询文档
a.find()方法
db.<集合名>.find()
b.find()方法查询指定列
db.<集合名>.find(
<查询条件>,
{
<列名1>:1,
<列名2>:1
}
)
示例:db.student.find({gender:0},{name:1,age:1}) //查询所有女生的姓名和年龄
c.pretty()方法以格式化的方式来显示文档
db.<集合名>.find(<查询条件>, {<列名1>:1, <列名2>:1}).pretty()
d.findOne()方法查询匹配结果的第一条数据
db.<集合名>.findOne(<查询条件>, {<列名1>:1, <列名2>:1})
5.查询条件操作符
db.<集合名>.find({<key>:{<op>:<value>}})
a.大于 $gt
示例:db.student.find(age:{$gt:20})
b.大于等于 $gte
c.小于 $lt
d.小于等于 $lte
e.大于等于和小于等于 $gte和$lte
db.<集合名>.find({<key>:{$gte:<value>, $lte:<value>}})
f.等于
db.<集合名>.find({<key>:<value>})
g.使用_id进行查询
语法:db.<集合名>.find("_id":ObjectId("<id值>"))
示例:db.student.find("_id":ObjectId("5995084b019723fe2a0d8d14"))
h.查询某个结果集的数据条数
db.student.find().count()
i.查询某个字段值当中是否包含另一个值
db.student.find({name:/ilt/})
j.查询某个字段的值是否以另一个值开头
db.student.find({name:/^ilt/})
6.条件查询and和or
a.AND条件
db.<集合名>.find({条件1,条件2,...,条件N})
b.OR条件
语法:db.<集合名>.find({$or:[{条件1},{条件2},...,{条件N}]})
示例:db.student.find({$or:[{age:17},{age:{$gte:20}}]}) //查询年龄大于17或者年龄大于等于20的记录
c.AND和OR联合使用
db.<集合名>.find(
{条件1,
条件2,
$or:[{条件3},{条件4}]
}
)
7.limit、skip
a.limit()读取指定数量的数据记录
db.student.find().limit(2)
b.skip()跳过指定数量的数据
db.student.find().skip(3)
c.skip与limit联合使用实现分页功能
db.student.find().skip(3).limit(3)
8.排序
升序:db.<集合名>.find().sort({<字段名>:1})
降序:db.<集合名>.find().sort({<字段名>:1})