MongoDB
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB服务端可运行在Linux、Windows平台,支持32位和64位应用,默认端口为27017。
推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
将bin目录所在位置配置为环境变量
C:\Program Files\MongoDB\Server\5.0\bin
在cmd中输入mongod出现信息则安装成功
mongodb默认的端口:27017
浏览器打开http://localhost:27017/
代表 mongodb服务已经启动了
在服务也能看到
https://studio3t.com/download
show dbs
或show databases
查看所有的数据库use xxx
切换到指定的数据库db
查看当前操作的数据库show collections
查看当前数据库中所有的集合
db
表示的是当前操作的数据库collectionName
表示操作的集合,若没有,则会自动创建
插入的文档如果没有手动提供_id
属性,则会自动创建一个
插入多条数据
插入一条数据
db.collectionName.insertOne( {name:'cxk',like:['唱','跳','rap','篮球']} )
插入多条数据
用数组放入一个个对象
db.collectionName.insertMany( [
{name:'cxk',like:['唱','跳','rap','篮球']},
{{name:'wyf',like:'踩缝纫机'}}
] )
可以插入一个或多个
db.collectionName.insert()
db.collectionName.find()
查询集合所有的文档,即所有的数据。
查询到的是整个数组对象。在最外层是有一个对象包裹起来的。
db.collectionName.find({name:"蔡徐坤"})
结果返回的是一个【数组】,可以在后面直接取索引下标
db.collectionName.findOne()
返回的是查询到的对象数组中的第一个对象(返回的是对象)
db.collectionName.count
比较操作符
$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
$eq 等于的另一种写法
$or 或者
// 大于200
db.users.find({num:{$gt:200}})
// 大于200且小于300
db.users.find({num:{$gt:200,$lt:300}})
//大于300或小于200
db.users.find(
{
$or:[
{num:{$gt:300}},
{num:{$lt:200}}
]
}
)
db.users.find().limit(10) // 前10条数据
db.users.find().skip(10).limit(10) // 跳过前10条数据,即查询的是第11-20条数据
find查询结果默认是id升序排序查询的
skip,limit,sort可以以任意的顺序调用,最终的结果都是先调sort,再调skip,最后调limit
// 1表示升序排列,-1表示降序排列
db.my.find().sort({_id:1})
// 先按照_id升序排列,如果遇到相同的_id,则按count降序排列
db.my.find().sort({_id:1,count:-1})
db.my.find().skip(10).limit(10).sort({_id:1,count:-1})
替换整个文档
db.collectionName.update(condiction,newDocument)
修改对应的属性,需要用到修改操作符,比如$set
,$unset
,$push
,$addToSet $pop
db.collectionName.update(
{_id:1}, // 查询条件
{
// 修改对应的属性
$set:{
name:'wyf',
like:'大碗宽面'
}
// 删除对应的[属性]
$unset:{
life:1 //这里的1可以随便改为其他的值,无影响
}
}
)
update默认与updateOne()等效,即对于匹配到的文档只更改其中的第一个
updateMany()可以用来更改匹配到的所有文档
db.students.updateMany(
{name:'cxk'},
{
$set:{
age:25,
like:''背带裤
}
}
)
db.users.update({name:'蔡徐坤'},{$push:{"song":'鸡你太美'}})
// 如果数据已经存在,则不会添加
db.users.update({name:'yk'},{$addToSet:{"song":'鸡你太美'}})
// 让num自增1
{$inc:{num:1}}
// 让num自减1
{$inc:{num:-1}}
// 给工资低于1000的员工增加400的工资
db.emp.updateMany({sal:{$lt:1000}},{$inc:{sal:400}})
db.collectionName.remove()
remove默认会删除所有匹配的文档。相当于deleteMany()
remove可以加第二个参数,表示只删除匹配到的第一个文档。此时相当于deleteOne()
db.my.remove({name:'蔡徐坤',true})
db.collectionName.deleteOne()
db.collectionName.deleteMany()
删除所有数据
db.my.remove({})
删除集合
db.my.drop()
删除数据库
db.dropDatabase()
注意:删除某一个文档的属性,应该用update。
remove以及delete系列删除的是整个文档