目录html
# NoSQL 泛指非关系型的数据库 NoSQL(NoSQL = Not Only SQL ),意即“不单单是SQL”,是一项全新的数据库革命性运动,早期就有人提出, 发展至2009年趋势愈加高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用, 这一律念无疑是一种全新的思惟的注入。 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 在高负载的状况下,添加更多的节点,能够保证服务器性能。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档相似于 JSON 对象。字段值能够包含其余文档, 数组及文档数组。 官网:https://www.mongodb.com/
MongoDB 是一个面向文档存储的数据库,操做起来比较简单和容易。 若是负载的增长(须要更多的存储空间和更强的处理能力) ,它能够分布在计算机网络中的其余节点上这就是所谓的分片。 Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 MongoDB支持各类编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 MongoDB容许在服务端执行脚本,能够用Javascript编写某个函数,直接在服务端执行,也能够把函数的定义存储在服务端,下次直接调用便可。 你能够在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。 你能够经过本地或者网络建立数据镜像,这使得MongoDB有更强的扩展性。
MongoDB 是一个面向文档存储的数据库,我的电脑安装能够考虑把数据存储到D盘或E盘(非系统盘). MongoDB 启动 "mongod" #(修改环境变量后,可在命令框直接输入mongod) - 指定 MongoDB 数据存储目录 --dbpath="d:/data/db" - 如: C:\mongodb\bin\mongod --dbpath="d:/data/db" 默认监听端口是 MongoDB:27017 | Mysql:3306 | Redis:6379 启动MongoDB服务 - net start MongoDB 关闭MongoDB服务 - net stop MongoDB 移除 MongoDB 服务 (慎用) - C:\mongodb\bin\mongod.exe --remove #win10系统 添加环境变量
nosqlbooster 推荐能够自行百度下载(免费)
MongoDB 启动 mongod 启动MongoDB服务 默认端口 27017 -- 默认数据库文件的存放地址 C:/data/db or /data/db -- dbpath="D:/data/db" mongo 启动客户端 -- 默认链接 localhost:27017 MongoDB 指令 1. show databases 查看本地磁盘中的数据库 > show databases admin 0.000GB local 0.000GB 2. use databasename 切换当前使用的数据库 > use admin switched to db admin # use 不存在的数据库名 即 在内存中建立该数据库 使用了不存在的对象 即 建立该对象 3. db 查看当前使用的数据库 > db admin 4. db.表名 找到数据库中的某张表 # db.不存在的表名 即 在数据库中建立该表(内存中) 使用了不存在的对象 即 建立该对象 5. show tables 查看当前数据库磁盘中的表 > show tables system.version
1.增 db.tablename.insert({}) db.user.insert({name:"沙悟净",age:66.666,hobby:[1,2,3,4,5]}) db.user.insert([{},{}]) 官方推荐写法 in 3.2: db.user.insertOne({}) 增长一条数据 db.user.insertMany([{},{}]) 批量增长数据 db.tablename.insert({name:123}) 官方承认但不推荐 res = db.tablename.insertOne({name:123}) # 增长一条数据 返回值 inserted_id res = db.tablename.insertMany([{name:123},{name:456}]) # 增长多条数据 返回值 inserted_ids 2.查询 db.tablename.find({查询条件}) 查询全部符合条件的数据 db.user.find({name:"沙悟净"}) 条件查询 # 并列条件查询 and db.tablename.find({查询条件1,查询条件2}) db.user.find({name:"沙悟净",age:77}) 并列条件查询 db.tablename.find({查询条件}) # 查询全部符合条件的数据 db.tablename.findOne({查询条件}) # 查询符合条件的第一条数据 返回JSON数据 $数据比较符 # 用法 db.user.find({age:{$gt:70}}) $lt 小于 $lte 小于等于 $gt 大于 $gte 大于等于 $eq 等于 # db.user.find({age:{$gt:70}})等同于 db.user.find({age:70}) (冒号不生效的的状况下可使用$eq ) $ne 不等于 3.改 db.tablename.update() 修改符合条件的第一条数据 # 全部MongoDB的修改所有基于 修改器 # $修改器 关键字 # $关键字: db.user.updateOne({name:"钢蛋","stdent.name":"MPy"},{$set:{"stdent.$.name":"Anyway"}}) db.user.updateOne({name:"狗蛋",hobby:"喝酒"},{$set:{"hobby.$":"飙车"}}) $是用来存储符合当前Array条件元素的下标索引 当前Array - ["抽烟","喝酒","上网"] 条件元素 - {hobby:"喝酒"} 当前Array - 第2个元素符合条件 它的下表索引是 1 当前$ 的值就是 1 若是使用".索引"的方式来操做Array "字段.索引位置" 官方推荐 db.user.updateOne({},{}) 修改符合条件的第一条数据 db.user.updateMany({},{}) 修改符合条件的全部数据 $set db.user.update({age:66.666},{$set:{age:44}}) 强制的将某字段值修改 db.user.update({name:"孙大圣"},{$set:{ag18e:18}}) 若是该字段不存在即建立该字段并赋值 $unset db.user.update({name:"孙大圣"},{$unset:{ag18e:1}}) 删除字段 $inc db.user.update({name:"孙大圣"},{$inc:{age:1}}) 引用增长 先引用原有数据 在原有数据基础上增长 db.user.update({name:"孙大圣"},{$inc:{age:-1}}) 减小 针对 Array List操做 $push == append db.user.update({name:"孙大圣"},{$push:{hobby:"8"}}) 在Array类型中增长数据在最末端增长 $pushAll == extends db.user.update({name:"孙大圣"},{$pushAll:{hobby:[9,10,11,12]}}) 在Array类型中增长数据在最末端增长多条数据 $pull == remove() db.user.update({name:"孙大圣"},{$pull:{hobby:"8"}}) 删除全部符合条件的数据 $pullAll db.user.update({name:"孙大圣"},{$pushAll:{hobby:[9,10,11,12]}}) 遍历删除全部符合条件的数据 $pop ~= pop() 删除Array中第一条或最后一条 db.user.update({name:"孙大圣"},{$pop:{hobby:-1}}) 删除第一个数据 db.user.update({name:"孙大圣"},{$pop:{hobby:1}}) 删除最后一个数据 ''' db.tablename.update({查询条件},{$修改器:{修改值}}) # 官方承认但不推荐 db.tablename.updateOne({查询条件},{$修改器:{修改值}}) # 修改符合条件的第一条数据 db.tablename.updateMany({查询条件},{$修改器:{修改值}}) # 修改全部符合条件的数据 $修改器 字段: $set 强制修改 建立字段 $unset 删除字段 {字段:1} $inc 引用增长 {$inc:{age:1/-1}} 只能增长不能减小 $修改器 Array List $push == append #追加数据 {$push:{hobby:6}} $pull == remove #删除元素 {$pull:{hobby:6}} $pop ~= pop #删除第一个(1)或者最后一个元素(-1) {$pop:{hobby:1/-1}} $pushAll == extends #追加批量元素 {$pushAll:{hobby:[4,5,6,7]}} $pullAll # 批量删除元素 {$pullAll:{hobby:[4,5,6,7]}} ''' 4.删除 db.tablename.remove({查询条件}) 删除符合条件的全部数据 db.user.remove({}) 若是条件为空则删除全部数据 危险! 官方推荐的写法: db.user.deleteOne({}) # 删除符合条件的第一条数据 db.user.deleteMany({}) # 删除全部符合条件的数据 危险! 若是条件为空则删除全部数据 db.tablename.remove({查询条件}) #官方承认但不推荐 db.tablename.deleteOne({查询条件}) # 删除符合条件的第一条数据 _id db.tablename.deleteMany({查询条件})# 删除全部符合条件的数据 5.选取 跳过 排序 排序 db.user.find({}).sort({age:-1}) 倒序 db.user.find({}).sort({age:1}) 正序 跳过 db.user.find({}).skip(跳过条目) 跳过 选取 db.user.find({}).limit(300) 选取300条数据 若是数据条目小于300 则所有查询 大于300 则只查询300条 db.user.find({}).sort({age:-1}).skip(1).limit(2) 当3个关键所有出如今一条语句中时,逻辑顺序 先排序 - 再跳过 - 最后选取 分页(每页2条数据): count = 2 page = 1 skip(page-1*count) db.user.find({}).sort({age:-1}).skip(page-1*count).limit(count) 1 2 0 1 2 2 2 1 3 2 4 1 4 2 6 1 5 2 8 1
MongoDB 的数据类型 ObjectID :Documents 自生成的 _id String: 字符串,必须是utf-8 Boolean:布尔值,true 或者false (这里有坑哦~在咱们大Python中 True False 首字母大写) Integer:整数 (Int32 Int64 大家就知道有个Int就好了,通常咱们用Int32) Double:浮点数 (没有float类型,全部小数都是Double) Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦) Object:若是你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典 Null:空数据类型 , 一个特殊的概念,None Null Timestamp:时间戳 Date:存储当前日期或时间unix时间格式 (咱们通常不用这个Date类型,时间戳能够秒杀一切时间类型)