安装
下载地址:https://www.mongodb.com/try/download/community
概念对比
| SQL概念 | MongoDB概念 | 解释/说明 | | ----------- | ----------- | ----------------------------------- | | database | database | 数据库 | | table | collection | 数据库表/集合 | | row | document | 数据记录行/文档 | | column | field | 数据字段/域 | | index | index | 索引 | | primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
基础命令
数据库
查看所有数据库:
show dbs
查看当前数据库:
db
切换数据库:
use <db_name>
,如:use test删除当前数据库:
db.dropDatabase()
集合
查看所有集合:
show collections
创建集合:
db.createCollection("<collection_name>")
,如:db.createCollection("article")
删除集合:
db.<collection_name>.drop()
,如:*db.article.drop()*
文档
插入文档
db.collection_name.insert(document)
shell db.article.insert({ title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: 'Andy', url: 'https://www.mongodb.com/', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
更新文档
javascript db.collection_name.update( <query>, // 查询条件,类似于SQL中的WHERE部分 <update>, // 类似与SQL中的SET部分 { multi: <boolean> // 是否更新符合条件的所有文档,默认false只更新找到的第一条 } )
```shell
将title为‘MongoDB 教程’的所有文档修改为MongoDB
db.article.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true}) ```
删除文档
shell db.collection_name.remove( <query> # 删除的查询条件 )
```shell
删除title为'MongoDB教程’的所有文档
db.article.remove({'title':'MongoDB 教程'}) ```
查询文档
MongoDB中的条件操作符,通过与SQL语句的对比来了解下;
| 操作 | 格式 | SQL中的类似语句 | | ---------- | ------------------------ | ------------------------------ | | 等于 | {key : value}
| where title = 'MongoDB 教程'
| | 小于 | {key : {$lt : value}}
| where likes < 50
| | 小于或等于 | {key : {$lte : value}}
| where likes <= 50
| | 大于 | {key : {$gt : value}}
| where likes > 50
| | 大于或等于 | {key : {$gte : value}}
| where likes >= 50
| | 不等于 | {key : {$ne : value}}
| where likes != 50
|
查看某集合下的所有文档:
db.collection_name.find({})
,如db.article.find({})
条件查询,查询title为
MongoDB教程
的所有文档:db.article.find({'title':'MongoDB教程'})
条件查询,查询likes大于50的所有文档:db.article.find({'likes':{$gt:50}})
and条件可以通过在
find()
方法传入多个键,以逗号隔开来实现,例如查询title为MongoDB教程
并且by为Andy
的所有文档:shell db.article.find({'title':'MongoDB教程','title':'MongoDB教程'})
or条件可以通过使用
$or
操作符实现,例如查询title为Redis教程
或MongoDB教程
的所有文档shell db.article.find({$or:[{"title":"Redis 教程"},{"title": "MongoDB 教程"}]})
and 和 or 条件的联合使用,例如查询likes大于50,并且title为
Redis教程
或者"MongoDB教程
的所有文档shell db.article.find({"likes": {$gt:50}, $or: [{"title": "Redis 教程"},{"title": "MongoDB教程"}]})
limit
读取指定数量的文档 db.collection_name.find().limit(n)
shell db.article.find().limit(2) #只查询article集合中的2条数据
skip
跳过指定数量的文档:db.article.find().skip(2).limit(2)
排序
db.collection_name.find().sort({key:1})
,1为升序,-1为降序
shell db.article.find().sort({likes:-1}) # 将article集合中文档的likes字段降序排列
索引
```shell db.collection.createIndex(keys, options)
background:建索引过程会阻塞其它数据库操作,设置为true表示后台创建,默认为false
unique:设置为true表示创建唯一索引
name:指定索引名称,如果没有指定会自动生成
```
- 给title和description字段创建索引,1表示升序索引,-1表示降序索引,指定以后台方式创建;
shell db.article.createIndex({"title":1,"description":-1}, {background: true})
- 查看article集合中已经创建的索引
shell db.article.getIndexes()
正则表达式
MongoDB使用$regex
操作符来设置正则表达式,可以用来模糊查询
db.article.find({title:{$regex:"教程"}})
shell db.article.find({ title:{$regex:"教程"} })
不区分大小写的模糊查询,使用
$options
操作符shell db.article.find({ title:{$regex:"教程", $options:"$i"} })
相关文章
https://juejin.cn/post/6844904150635921422#heading-14
https://juejin.cn/post/7126746699527094303#heading-54