经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MongoDB » 查看文章
MongoDB(NoSQL) 非关系型数据库
来源:cnblogs  作者:郭楷丰  时间:2019/10/14 9:53:28  对本文有异议

简单了解 mongoDB

  1. # NoSQL 泛指非关系型的数据库
  2. NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,
  3. 发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,
  4. 这一概念无疑是一种全新的思维的注入。
  5. MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
  6. 在高负载的情况下,添加更多的节点,可以保证服务器性能。
  7. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
  8. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,
  9. 数组及文档数组。
  10. 官网:https://www.mongodb.com/

mongoDB 特点

  1. MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
  2. 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
  3. Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  4. MongoDB支持各种编程语言:RUBYPYTHONJAVAC++,PHPC#等多种语言。
  5. MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
  6. 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
  7. 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

下载与安装

  • 安装流程参考 点击
  • 修改数据库存储位置
  1. MongoDB 是一个面向文档存储的数据库,个人电脑安装可以考虑把数据存储到D盘或E盘(非系统盘).
  2. MongoDB 启动 "mongod" #(修改环境变量后,可在命令框直接输入mongod)
  3. - 指定 MongoDB 数据存储目录 --dbpath="d:/data/db"
  4. - 如: C:\mongodb\bin\mongod --dbpath="d:/data/db"
  5. 默认监听端口是 MongoDB:27017 | Mysql:3306 | Redis:6379
  6. 启动MongoDB服务
  7. - net start MongoDB
  8. 关闭MongoDB服务
  9. - net stop MongoDB
  10. 移除 MongoDB 服务 (慎用)
  11. - C:\mongodb\bin\mongod.exe --remove
  12. #win10系统 添加环境变量

可视化工具

  1. nosqlbooster 推荐可以自行百度下载(免费)

简单使用mongoDB

  1. MongoDB 启动
  2. mongod 启动MongoDB服务 默认端口 27017
  3. -- 默认数据库文件的存放地址 C:/data/db or /data/db
  4. -- dbpath="D:/data/db"
  5. mongo 启动客户端
  6. -- 默认连接 localhost:27017
  7. MongoDB 指令
  8. 1. show databases 查看本地磁盘中的数据库
  9. > show databases
  10. admin 0.000GB
  11. local 0.000GB
  12. 2. use databasename 切换当前使用的数据库
  13. > use admin
  14. switched to db admin
  15. # use 不存在的数据库名 即 在内存中创建该数据库 使用了不存在的对象 即 创建该对象
  16. 3. db 查看当前使用的数据库
  17. > db
  18. admin
  19. 4. db.表名 找到数据库中的某张表
  20. # db.不存在的表名 即 在数据库中创建该表(内存中) 使用了不存在的对象 即 创建该对象
  21. 5. show tables 查看当前数据库磁盘中的表
  22. > show tables
  23. system.version

数据操作

  1. 1.
  2. db.tablename.insert({})
  3. db.user.insert({name:"沙悟净",age:66.666,hobby:[1,2,3,4,5]})
  4. db.user.insert([{},{}])
  5. 官方推荐写法 in 3.2
  6. db.user.insertOne({}) 增加一条数据
  7. db.user.insertMany([{},{}]) 批量增加数据
  8. db.tablename.insert({name:123}) 官方认可但不推荐
  9. res = db.tablename.insertOne({name:123}) # 增加一条数据 返回值 inserted_id
  10. res = db.tablename.insertMany([{name:123},{name:456}]) # 增加多条数据 返回值 inserted_ids
  11. 2.查询
  12. db.tablename.find({查询条件}) 查询所有符合条件的数据
  13. db.user.find({name:"沙悟净"}) 条件查询
  14. # 并列条件查询 and
  15. db.tablename.find({查询条件1,查询条件2})
  16. db.user.find({name:"沙悟净",age:77}) 并列条件查询
  17. db.tablename.find({查询条件}) # 查询所有符合条件的数据
  18. db.tablename.findOne({查询条件}) # 查询符合条件的第一条数据 返回JSON数据
  19. $数据比较符
  20. # 用法 db.user.find({age:{$gt:70}})
  21. $lt 小于
  22. $lte 小于等于
  23. $gt 大于
  24. $gte 大于等于
  25. $eq 等于 # db.user.find({age:{$gt:70}})等同于 db.user.find({age:70}) (冒号不生效的的情况下可以使用$eq )
  26. $ne 不等于
  27. 3.
  28. db.tablename.update() 修改符合条件的第一条数据
  29. # 所有MongoDB的修改全部基于 修改器
  30. # $修改器 关键字
  31. # $关键字:
  32. db.user.updateOne({name:"钢蛋","stdent.name":"MPy"},{$set:{"stdent.$.name":"Anyway"}})
  33. db.user.updateOne({name:"狗蛋",hobby:"喝酒"},{$set:{"hobby.$":"飙车"}})
  34. $是用来存储符合当前Array条件元素的下标索引
  35. 当前Array - ["抽烟","喝酒","上网"]
  36. 条件元素 - {hobby:"喝酒"}
  37. 当前Array - 2个元素符合条件 它的下表索引是 1
  38. 当前$ 的值就是 1
  39. 如果使用".索引"的方式来操作Array "字段.索引位置"
  40. 官方推荐
  41. db.user.updateOne({},{}) 修改符合条件的第一条数据
  42. db.user.updateMany({},{}) 修改符合条件的所有数据
  43. $set
  44. db.user.update({age:66.666},{$set:{age:44}})
  45. 强制的将某字段值修改
  46. db.user.update({name:"孙大圣"},{$set:{ag18e:18}})
  47. 如果该字段不存在即创建该字段并赋值
  48. $unset
  49. db.user.update({name:"孙大圣"},{$unset:{ag18e:1}})
  50. 删除字段
  51. $inc
  52. db.user.update({name:"孙大圣"},{$inc:{age:1}})
  53. 引用增加 先引用原有数据 在原有数据基础上增加
  54. db.user.update({name:"孙大圣"},{$inc:{age:-1}})
  55. 减少
  56. 针对 Array List操作
  57. $push == append
  58. db.user.update({name:"孙大圣"},{$push:{hobby:"8"}})
  59. Array类型中增加数据在最末端增加
  60. $pushAll == extends
  61. db.user.update({name:"孙大圣"},{$pushAll:{hobby:[9,10,11,12]}})
  62. Array类型中增加数据在最末端增加多条数据
  63. $pull == remove()
  64. db.user.update({name:"孙大圣"},{$pull:{hobby:"8"}})
  65. 删除所有符合条件的数据
  66. $pullAll
  67. db.user.update({name:"孙大圣"},{$pushAll:{hobby:[9,10,11,12]}})
  68. 遍历删除所有符合条件的数据
  69. $pop ~= pop() 删除Array中第一条或最后一条
  70. db.user.update({name:"孙大圣"},{$pop:{hobby:-1}})
  71. 删除第一个数据
  72. db.user.update({name:"孙大圣"},{$pop:{hobby:1}})
  73. 删除最后一个数据
  74. '''
  75. db.tablename.update({查询条件},{$修改器:{修改值}}) # 官方认可但不推荐
  76. db.tablename.updateOne({查询条件},{$修改器:{修改值}}) # 修改符合条件的第一条数据
  77. db.tablename.updateMany({查询条件},{$修改器:{修改值}}) # 修改所有符合条件的数据
  78. $修改器 字段:
  79. $set 强制修改 创建字段
  80. $unset 删除字段 {字段:1}
  81. $inc 引用增加 {$inc:{age:1/-1}} 只能增加不能减少
  82. $修改器 Array List
  83. $push == append #追加数据 {$push:{hobby:6}}
  84. $pull == remove #删除元素 {$pull:{hobby:6}}
  85. $pop ~= pop #删除第一个(1)或者最后一个元素(-1) {$pop:{hobby:1/-1}}
  86. $pushAll == extends #追加批量元素 {$pushAll:{hobby:[4,5,6,7]}}
  87. $pullAll # 批量删除元素 {$pullAll:{hobby:[4,5,6,7]}}
  88. '''
  89. 4.删除
  90. db.tablename.remove({查询条件}) 删除符合条件的所有数据
  91. db.user.remove({}) 如果条件为空则删除所有数据 危险!
  92. 官方推荐的写法:
  93. db.user.deleteOne({}) # 删除符合条件的第一条数据
  94. db.user.deleteMany({}) # 删除所有符合条件的数据 危险! 如果条件为空则删除所有数据
  95. db.tablename.remove({查询条件}) #官方认可但不推荐
  96. db.tablename.deleteOne({查询条件}) # 删除符合条件的第一条数据 _id
  97. db.tablename.deleteMany({查询条件})# 删除所有符合条件的数据
  98. 5.选取 跳过 排序
  99. 排序
  100. db.user.find({}).sort({age:-1}) 倒序
  101. db.user.find({}).sort({age:1}) 正序
  102. 跳过
  103. db.user.find({}).skip(跳过条目) 跳过
  104. 选取
  105. db.user.find({}).limit(300) 选取300条数据
  106. 如果数据条目小于300 则全部查询
  107. 大于300 则只查询300
  108. db.user.find({}).sort({age:-1}).skip(1).limit(2)
  109. 3个关键全部出现在一条语句中时,逻辑顺序 先排序 - 再跳过 - 最后选取
  110. 分页(每页2条数据):
  111. count = 2
  112. page = 1
  113. skip(page-1*count)
  114. db.user.find({}).sort({age:-1}).skip(page-1*count).limit(count)
  115. 1 2 0 1
  116. 2 2 2 1
  117. 3 2 4 1
  118. 4 2 6 1
  119. 5 2 8 1

数据类型

  1. MongoDB 的数据类型
  2. ObjectID Documents 自生成的 _id
  3. String 字符串,必须是utf-8
  4. Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python True False 首字母大写)
  5. Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
  6. Double:浮点数 (没有float类型,所有小数都是Double)
  7. Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
  8. Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
  9. Null:空数据类型 , 一个特殊的概念,None Null
  10. Timestamp:时间戳
  11. Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
作 者:郭楷丰
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角 推荐一下。您的鼓励是博主的最大动力!
自 勉:生活,需要追求;梦想,需要坚持;生命,需要珍惜;但人生的路上,更需要坚强。带着感恩的心启程,学会爱,爱父母,爱自己,爱朋友,爱他人。

原文链接:http://www.cnblogs.com/guokaifeng/p/11662408.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号