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

代表 mongodb服务已经启动了
在服务也能看到

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系列删除的是整个文档