mongodb学习(一)
| 应用特征 | Yes / No |
|---|---|
| 应用不需要事务及复杂 join 支持 | 必须 Yes |
| 新应用,需求会变,数据模型无法确定,想快速迭代开发 | ? |
| 应用需要2000-3000以上的读写QPS(更高也可以) | ? |
| 应用需要TB甚至 PB 级别数据存储 | ? |
| 应用发展迅速,需要能快速水平扩展 | ? |
| 应用要求存储的数据不丢失 | ? |
| 应用需要99.999%高可用 | ? |
| 应用需要大量的地理位置查询、文本查询 | ? |
上面是从MongoDB 公司公开技术分享中得到的,如果其中有一个YES,那么代表你可以使用MongoDB。
mongodb是文档型的nosql。所以对于结构性太强的数据,最好还是不要用MongoDB。也就是说mysql中JOIN用很多次的数据,最好不要用这种数据库。
1.基本概念
| SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
|---|---|---|
| database | database | 数据库 |
| table | collection | 数据库表/集合 |
| row | document | 数据记录行/文档 |
| column | field | 数据字段/域 |
| index | index | 索引 |
| table joins | 表连接,MongoDB不支持 | |
| primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
2.命令
数据库命令
- mac中使用brew安装后,可以通过brew services start mongodb 来开启服务。linux可以使用对应的服务命令开启。
- mongodb://username:password@hostname/dbname 可以用来进入数据库。仅输入mongo进入的是本地默认的mongodb。 mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
- show dbs 可以展示所有的数据库,db 展示现在所使用的数据库。use dbname 使用dbname这个数据库。如果没有,则创建。并且需要往里面插入数据,才能在show dbs中展示出来。
- db.dropDatabase()删除当前的数据库
文档命令
use 数据库名后,在该数据库中,可以进行增删改查。
show tables 同样可以查询到该db下的所有集合。也就是相对于mysql中的数据表来说。
------------------------------------------------------------
db.COLLECTION_NAME.insert(document) 同样的,如果集合不存在,则自动创建。不用像mysql似的,要手动创建。
db.COLLECTION_NAME.insertMany([document,document]) 一次插入多个数据 不用insertMany 直接用insert也是可以的。只要有[]。
------------------------------------------------------------
db.COLLECTION_NAME.find() 查询集合中所有的数据。
db.COLLECTION_NAME.findOne({...}) 可以查到包含这个子数据的数据。只能查到一个。
------------------------------------------------------------
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true}) 第一个{}是查询的条件,第二个{}是新数据。
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
db.collection.updateOne() 向指定集合更新单个文档 db.collection.updateMany() 向指定集合更新多个文档
db.col.save({}) 直接保存文档,到对应的_id中。
db.col.remove({"name":"zj1"},{justOne:true}) 第一个{}是查询条件,justone表示仅删除一条,默认是flase。
db.col.deleteOne() db.col.deleteMany() 删除一个或多个,推荐用这个。

浙公网安备 33010602011771号