一、MongoDB介绍

  MongoDB是一个由c++编写的基于分布式文件存储的数据库。MongoDB介于关系型数据库和非关系型数据库之间,是非关系型数据库中功能最丰富,最接近关系型数据库。具有高性能,易使用,易部署的特点,同时MongoDB还能跨平台。

二、MySql和MongoDB对比

MySql MongoDB 说明
database database 数据库
table collection 集合
row document 文档
column field 字段
index index 索引
primary key _id 主键
join 内嵌文档 最像关系型的原因

  document:以json键值对的形式存储。

  collection:document的集合。

  _id:每一个document都有一个_id。

  MongoDB组织结构:数据库>>集合

三、MongoDB库的操作

  1)、登录

    1、mongo:默认连接到test库,test可以不存在。

      查看有哪些数据库:show dbs

      退出数据库:exit,或者quit()

    2、mongo ip:port/dbname:指定IP,端口,数据库

  2)、切换或创建库

    use dbname:默认情况下如果不做任何操作,不会保留新创建的数据库

  3)、删除库

    use dbname:切换到目标数据库

    db.dropDatabase:删除目标数据库

  4)、查看当前所在库名

    db或者db.getName()

  5)、查看当前库的集合

    show tables或者show collections

四、新增文档

  db.collectionName.insert({key1:intVal1,key:'charVal',key3:['intVal','charVal',……] } )

    collectionName是目标集合名

  db.collectionName.save()功能和insert类似,区别在于如果在save中指定已经存在的_id,则会相当于update,会修改原数据

  批量新增数据:db.sourceCollection.find().forEach(function(x){db.newCollection.insert(x)})

    反复执行这条指令,只会插入一次

五、查看文档

  db.collectionName.find(COND_JSON,SHOW_JSON)

  1、db.collectionName.find():查看集合下所有文档

  2、db.collectionName.find({key1:intVal,key2:'charVal',……}):查看集合下所有满足key1=inVal,key2='charVal',……的文档

  3、db.collectionName.find({key1:{$gt:intVal},key2:'charVal',……}):查看集合下所有满足key1大于inVal,key2='charVal',……的文档

    $gt=greater than 大于

    $lt=less than 小于

    $lte=less than equal 小于等于

    $gte=greater than equal 大于等于

    $ne=not equal 不等于

  4、db.collectionName.find({},{key1:1,key2:1,……}):查看集合所有文档,并且只显示key1,key2,……等部分列。db.collectionName.find({},{key1:1,key2:1,……,_id:0})显示部分列且不显示_id列

  5、db.collectionName.find({ $or : [ {key1:intVal1},{key1:intVal2} ] }):查看集合下key1=intVal1或者key1=intVal2的文档。db.collectionName.find( {key1: {$in:[intVal1,intVal2]} } )同前。db.collectionName.find( {key1: {$nin:[intVal1,intVal2]} } )查看key1!=intVal1或者key!=intVal2的文档

  6、db.collectionName.find({key:null }):显示key为空的文档,没有key字段也符合条件

  7、db.collectionName.find().sort( { key:1}):显示文档按key的升序排列。db.collectionName.find().sort( { key:-1})按降序排列

  8、db.collectionName.find().skip(intVal1).limit(intVal2):跳过intVal1条数据,显示intVal2条数据

六、修改文档

  db.collectionName.update( <query>, <update>, { upsert: boolVal, multi: boolVal,……}):<query>要修改的文档,<update>要修改成的数据。upsert,如果条件不存在是否新增数据,默认是false。multi,是否修改多条,默认是false,只更新找到的第一条。

  db.collectionName.update( {key1: val}, {$set : {key2: val} } ):指定set,只会修改key2的值,不会覆盖。如果不指定set,会将{key2:val}直接覆盖原文档。

七、删除文档

  db.collectionName.remove( <query>, {justOne: boolVal, writeConcern: <document> } ):<query>要删除的文档。justOne,是否只删除一个,默认是false。writeConsern默认使用WriteConsern.NORMAL 仅仅抛出网络异常

  db.collectionName.drop()删除集合

八、索引

  索引的作用:提高查询效率

  db.collectionName.ensureIndex( {key:1} ):创建key的索引

  db.collectionName.dropIndex( {key:1} ):删除key的索引

九、聚合函数

  db.collectionName.aggregate( {$group: {_id: "$key", ……} }):指定集合collectionName按照key分组。

  db.collectionName.find().count():显示集合的记录总数

最新文章

  1. Listener监听器使用小案例
  2. AndroidStudio导入项目常见问题
  3. Codeforces Round #350 (Div. 2) D2. Magic Powder - 2
  4. ubuntu14.04 安装matlab r2013a
  5. OC基础-day05
  6. linux ----Inode的结构图
  7. SQL主、外键,子查询
  8. 2d-x中Lua类型强转问题
  9. ubuntu 11.04安装笔记
  10. mysql alter table
  11. PropertiesDemo
  12. MVC(@html.action)调用子操作方法
  13. D3.js-数值自动变动的条形图表
  14. Django rest framework(8)---- 视图和渲染器
  15. 运输计划NOIP2015Day2T3
  16. 用树莓派改装电风扇及实现Android遥控
  17. Java NIO -- 阻塞和非阻塞
  18. obv15 案例4,待日后分析
  19. 转:Ogre TerrainGroup地形赏析
  20. JavaScript学习总结(二)——逻辑Not运算符详解

热门文章

  1. 如何用纯 CSS 绘制一个世界上不存在的彭罗斯三角形
  2. linux下NVIDIA GPU驱动安装最简方式
  3. Delphi 鼠标的编程
  4. pathlib:处理文件路径的瑞士军刀
  5. filepath:处理文件路径的一把好手
  6. Freeradius+Cisco2500AC+OpenLdap认证
  7. ip正则
  8. Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko、subprocess、ConfigParser、xml、shelve模块的使用
  9. 【AGC006 C】Rabbit Exercise
  10. Java 实现C#中的String.format效果 解决(&quot;我是{0},今年了&quot;,&quot;whaozl&quot;) bug