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() 删除一个或多个,推荐用这个。

 

  

posted @ 2017-10-21 09:34  darkz88  阅读(123)  评论(0)    收藏  举报