初始MongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

它和我们使用的关系型数据库最大的区别就是约束性,可以说文件型数据库几乎不存在约束性,理论上没有主外键约束,没有存储的数据类型约束等等

关系型数据库中有一个"表" 的概念,有 "字段" 的概念,有 "数据条目"的概念

MongoDB中也同样有以上的概念,但是名称发生了一些变化,严格意义上来说,两者的概念即为相似,但又有些出入,不过无所谓,我们就当是以上概念就好啦

文件型数据库和关系型数据库的区别

文件型 -MongoDB

User:

[

{id:1,name:"蔡文姬",age:16,gender:"女"},

{id:2,name:"嫦娥",age:16,gender:"女"},

{

id:3,

name:"孙悟空",

age:16,

gender:"女"},

{

id:"四",

name:123,

age:"十六",

gender:1,

hobby:["篮球","于谦","羽毛球","双色球”]

}

]

MySQL MS-MySQL Ux

User:

ID name age gender hobby1 蔡文姬 16女 null2 嫦娥 9999女 null3 孙悟空 8888 男 null

MongoDB数据库的优势

MongoDB的优点:

操作简单方便易懂,更加接近程序员操作,原生语法ORM,因为是非关系型数据库,没有结构限制,扩展性很强

不同数据库对应的不同端口号:

Redis6379MYSQL3306MongoDB27017

MongoDB数据库的安装方式

1.需要百度搜索进入官网进行下载安装包2.打开安装包进行安装到自己的指定路径下3.找到/bin目录,将路径配置到电脑的环境变量下4.配置好环境变量后,需要指定一个盘创建文件夹/data/db,创建好后,需要输入mongod --dbpath "相关/data/db文件夹的存放路径"命令5.输入完成后,CMD界面会保持再那里不变,需要再开启一个cmd界面6.输入 mongo 命令,进入成功后,再输入db命令即可查看mongodb安装好的数据库

7.之后我们再进行开启数据库就需要输入 mongod --dbpath "相关/data/db文件夹的存放路径"命令即可

不安装相关data/db文件夹路径的报错信息

MongoDB的增删改查操作

mongodb的基本操作命令

db --当前使用的数据库,查看名称,代指当前使用的数据库

show databases--查看当前服务器磁盘上的所有数据库

use dbname--切换当前使用的数据库,或者再内存中创建一个新的数据库赋值给db

show tables--查看当前数据库中的所有磁盘中的表

db.tablename--使用当前数据库中的tablename表,在内存中创建表

(使用不存在的对象即为创建对象)

MongoDB的增

创建一个Collection数据库

往表(Collection)中添加一条数据

db.Collection.insert({name:123}) #在磁盘中写入数据{name:123}

db.Collection.insert({name:"黄尚"},{name:'晖飞'})#在磁盘中写入多条数据

insert     insertOne     insertMany(官方推荐操作)

insertedId是增加数据的 _id ObjectId

insertedIds是增加数据的_id ObjectId 列表 [ObjectId(),ObjectId()]

MongoDB的查

db.Collection.find({查询条件})#查询所有符合条件的数据

其中的:"_id":ObjectId,就是MongoDB自动给我们添加到系统唯一标识"_id" 是一个ObjectId 类型

findOne()无条件查找一条数据,默认当前Collection中的第一条数据

findOne({age:19}) : 条件查找一条age等于19的数据,如有多条数据则返回更靠前的数据

MongoDB的改

update({"name":"DragonFire"},{$set:{"age":21}}):根据条件修改该条数据的内容(其中如果条件为空,那么将会修改Collection中所有的数据)

updateOne({"age":19},{$set:{"name":"WSSB"}}):根据条件修改一条数据的内容,如出现多条,只修改最高前的数据

updateMany({"age":19},{$set:{"name":"pig_qi"}}):根据条件修改所有数据的内容,多条修改

$set 是update时的关键字,表示我要设置字段属性的值,如果该条Documents没有name属性,他就会自动创建一个相关属性并赋值

MongoDB的删

remove({}):无条件删除数据,这里要注意了,这是删除所有数据,清空Collection

remove({"name":"DragonFire"}) : 条件删除name等于"DragonFire"的所有Document

db.tablename.drop():删除表格

db.dropDatabase():删除库

db.tablename.deleteOne():删除符合条件的第一条数据

db.tablebname.deleteMany():删除所有符合条件的数据

(做此操作前一定要三思而后行)

MongoDB的数据类型

Object ID :Documents 自生成的 _id

String: 字符串,必须是utf-8Boolean:布尔值,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类型,时间戳可以秒杀一切时间类型)

Object ID

"_id" : ObjectId("5b151f8536409809ab2e6b26")#"5b151f85" 代指的是时间戳,这条数据的产生时间#"364098" 代指某台机器的机器码,存储这条数据时的机器编号#"09ab" 代指进程ID,多进程存储数据的时候,非常有用的#"2e6b26" 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的#以上四种标识符拼凑成世界上唯一的ObjectID#只要是支持MongoDB的语言,都会有一个或多个方法,对ObjectID进行转换#可以得到以上四种信息

#注意:这个类型是不可以被JSON序列化的

String

UTF-8字符串,记住是UTF-8字符串

Boolean

true or false 这里首字母是小写的

Integer

整数 (Int32 Int64 一般我们用Int32)

Double

浮点数 (MongoDB中没有float类型,所有小数都是Double)

Arrays

数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦

Null

空数据类型 , 一个特殊的概念,None Null

Timestamp

时间戳

Date

存储当前日期或时间格式 (我们一般很少使用这个Date类型,因为时间戳可以秒杀一切时间类型)

MongoDB数据库的$ 字符特殊用法

数学比较符

$lt 小于

$lte 小于等于

$gt 大于

$gte 大于等于

$eq :      等于

$ne    不等于

$修改器 + $ 字符特殊用法

$inc : Python中的  变量 += 1 , 将查询到的结果 加上某一个值 然后保存

还可以增加负数,就是相减

$set : 把 "score" 为 100 分 的 "english_name" 赋值为 "LuffyCity"

把 "score" 为 20 分的 "score" 赋值为 59 分

$unset : 用来删除Key(field)的

$push : 它是用来对Array (list)数据类型进行 增加 新元素的,相当于我们Python中 list.append() 方法

$pushAll == extend()(相当于python当中的exend方法,将表中的元素一个一个的添加上去)

$pull : 有了$push 对Array类型进行增加,就一定有办法对其内部进行删减,$pull 就是指定删除Array中的某一个元素

如果 Array 数据类型中 如果有 多个 6,就会全部删除(只要满足条件,就会将Array中所有满足条件的数据全部清除掉)

$pullAll==删除根据exend创建的

$pop : 指定删除Array中的第一个 或 最后一个 元素

删除第一个({$pop:{"test_list" : -1}}  -1 代表最前面, 1 代表最后边 (这和我们Python正好相反))

$字符的指定用法

例子:hobbys中等于5的元素改为 "五"

先查询到hobbys中5的 位置(2) ,将位置存储在 $==(2) 字符中 然后根据$字符的位置(2)更改数据

db.stu.update({"hoobys":5},{ $set: {"hoobys.$":"五"} })

Object操作:

把price 中 19000 改为 19300

db.Oldboy.update({"name":"路飞学城-骑士计划"},{$set:{"price.2":19300}})

我们用了引用下标的方法更改了数值 , "price.2"代指的是 Array 中第3个元素

把other中 count 改为 199

如果 count 小于 200 那么 加 10

排序+选取+跳过

排序 sort 将结果按照关键字排序

db.tablename.find().sort({age:1}) #1正序 -1倒叙

选取 limit

db.tablename.find().limit(2) #选取两条数据(整个Collection的第一条 Document 开始选取两条)

跳过 skip

db.tablename.find().skip(2) #跳过前两条数据

选择中间两条或跳过前N条

db.tablename.find().skip(0).limit(2).sort({age:-1})

执行顺序为先排序--跳过--选取

var page=1var num=2var sk=(page-1)*num

db.tablename.find().skip(sk).limit(num).sort({age:-1})

使用Python操作mongodb

使用python进行连接

安装mongodb的相关模块

pip3 install pymongo

引入mongodb,连接数据库进行操作from pymongo importMongoClient

m_client=MongoClient("127.0.0.1",27017)#输入本机与端口的连接

mdb=m_client['s20']#关系连接数据库

python对数据库的增删改查操作

增:

res=mdb.user.insert_one({"name":"DragonFire"})

res=mdb.user.insert_many([{"name":"小黑"},{"name":"小二B"}])#增加数据时 res.inserted_id or inserted_ids,都是 ObjectId不是字符串

查:

res=list(mdb.user.find({}))print(res)

res_list=[]for user inres:

user["_id"] = str(user.get("_id"))

res_list.append(user)

res_json=json.dumps(res_list)print(res_json)

res=list(mdb.user.find({}))print(res)for index,user inenumerate(res):

res[index]["_id"] = str(user.get("_id"))

res_json=json.dumps(res)print(res_json)

改:

mdb.tablename.update_one({"name":"小蓝"},{"$set":{"name":"A_C"}})

user= mdb.user.find_one({"name":"A_C"})

user["gender"] = 1user["age"] = 99user["name"] = "小二A_C"user["hobby"] = ["choyan","hj","xzt"]

mdb.user.update_one({"name":"A_C"},{"$set":user})

user= mdb.user.find_one({"name":"小二A_C"})

user["hobby"].append("洗头")

user["hobby"].remove("hj")

mdb.user.update_one({"name":"小二A_C"},{"$set":{"hobby":user.get("hobby")}})

删:

res=mdb.user.delete_one({})print(res.deleted_count)

使用python进行排序+skip+limit

mdb.stu.find().sort("age",pymongo.DESCENDING)#倒叙

mdb.stu.find().sort("age",pymongo.ASCENDING)#正序

mdb.stu.find().skip(2)#跳过前两行数据读取

mdb.stu.find().limit(2)#读取两行数据

res = list(mdb.stu.find().sort("age",pymongo.DESCENDING))for s inres:print(s)

分页:

res=(list(mdb.stu.find().sort("age",pymongo.ASCENDING).limit(2).skip(4))print(res)

mongodb数据库扩展名_MongoDB文件型数据库相关推荐

  1. mongodb数据库扩展名_MongoDB学习笔记:MongoDB 数据库的命名、设计规范

    第一部分,我们先说命名规范. 文档 设计约束 UTF-8 字符 不能包含 \0 字符(空字符),这个字符标识建的结尾 . 和 $ 有特殊含义,需要避免 区分大小写 键不能重复 键/值对有序 实践约束 ...

  2. mongodb数据库扩展名_MongoDB权威指南

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.它的特点是高性能.易部署.易使用,存储数据非常方便. MongoDB是一个介于关系 ...

  3. mongodb数据库扩展名_MongoDB如何存储数据

    想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files. Memeory-Mapped Files 下图展示了数据库是如何跟底层系统打交道的. ...

  4. mongodb数据库扩展名_MongoDB 数据库引用

    MongoDB 数据库引用 在上一章节MongoDB关系中我们提到了MongoDB的引用来规范数据结构文档. MongoDB 引用有两种: 手动引用(Manual References) DBRefs ...

  5. JAVA IO - 删除特定扩展名的文件

    2019独角兽企业重金招聘Python工程师标准>>> 想要删除带有特定扩展名的文件需要实现FileNameFilter接口,请看代码. import java.io.File; i ...

  6. 递归查找具有特定扩展名的文件

    我正在尝试使用我的bash(最新的Ubuntu LTS版本)在目录及其子目录中查找具有特定扩展名的所有文件. 这是在脚本文件中写的: #!/bin/bashdirectory="/home/ ...

  7. (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致...

    1.打开注册表编辑器 方法:开始 -> 运行 -> 输入regedit -> 确定2.找到注册表子项 HKEY_CURRENT_USER\Software\Microsoft\Off ...

  8. 用Nginx如何配置运行无扩展名PHP文件或非.PHP扩展名文件

    用Nginx如何配置运行无扩展名PHP文件或非.PHP扩展名文件 使用Apache + PHP 很容易做到运行无扩展名的PHP文件. 在Nginx中能做到吗?是可以的. 只需将nginx.conf文件 ...

  9. 获取某一扩展名的文件集合

    /// 获取某一扩展名的文件集合         /// </summary>         /// <param name="dictoryName"> ...

最新文章

  1. The Ultimate Guide To iPhone Resolutions
  2. JVM内存回收算法简述
  3. android手势放大自动还原,ImageView通过matrix实现手势缩放,放大,缩小 ,移动
  4. Java键盘交互设计输入法,输入法中暖心的交互细节
  5. jenkins pipeline发送邮件报错解决办法: failed to connect, no password specified?
  6. .NET CORE 怎么样从控制台中读取输入流
  7. pip/pip3更换国内源
  8. 使用DataGrip连接Hive
  9. 聚类算法详解——深度AI科普团队
  10. Codeforces 869C The Intriguing Obsession
  11. 【开源电机驱动】H桥的安全保护机制
  12. 选择合理的WCDMA网络无线扩容方案(转)
  13. 200以后最小质数:
  14. CS224W摘要12.Frequent Subgraph Mining with GNNs
  15. mysql mtq_mysql重点词汇 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区
  16. python通过手机拍摄的视频图片进行人脸头像采集
  17. jQuery - 小鸟系列之DOM操作
  18. 基于java web的网上书店系统
  19. SpringBoot集成Elasticsearch7.4 实战(一)
  20. 云计算技术基础【2】

热门文章

  1. acmclub 2081 班级聚会上的游戏
  2. 计算机网络可靠性的重要指标,浅谈如何提高计算机网络的可靠性
  3. 【CSS3】 CSS3实现“图片阴影”效果
  4. 典型的DOS攻击技术
  5. 微博改变一切_改变自己是神,改变别人是神经病!(深度好文)
  6. 热门计算机软件学校,热门专科专业排行榜-热门大专专业排名前十名
  7. pygame 精灵精灵组
  8. windows播放函数PlaySound
  9. open3d中的kd树详解
  10. dpi、dp、sp、px、mm之间的关系