MongoDB笔记篇

 

MongoDB介绍

- 介绍:

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

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

 

- MongoDB与关系型数据库的区别(MySQL)

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

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

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

 

- MongoDB中存储的“表”:

MongoDB中的数据的存储方式类似与 JSON数据

MongoDB的每个表(Collection)中存储的每条数据(Documents)都是一个一个的Json,
Json中的每一个字段(Key)我们称之为:Field

所以,Collection也就是关系型数据库中""的概念,
Documents就是"数据条目",Field就是"字段"

 

- 安装:

  - 官网下载地址:https://www.mongodb.com/

 

  - 下载msi安装包,下载成功后 一路点点点即可;

 

  - 默认安装路径为:C:\Program Files\MongoDB\Server\3.4\

  

  - 将当前工作目录下的 bin文件加入环境变量:

  

  

  - CMD中开启服务器:输入命令:mongod

    - 会报错,报错是因为在C盘根目录下缺少了 data\db 两个文件;

    - 在C盘根目录下创建这两个文件,重启即可;

 

  - CMD开启client:输入命令:mongo

 

MongoDB中存储的数据类型

- MongoDB中的十种数据类型:

Object  ID :Documents 自生成的 _id

String: 字符串,必须是utf-8

Boolean:布尔值,true 或者false (在Python中 True False 首字母大写)

Integer:整数 (Int32 Int64 一般用Int32)

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

Arrays:数组或者列表,多个值存储到一个键 (list哦,相当于Python中的List哦)

Object:相当于Python中的字典,这个数据类型就是字典

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

Timestamp:时间戳

Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

 

- Object ID:

  - 每条数据都会自动生成 Object ID;

  - 宇宙唯一,利用了时间和空间;

  - 补充:

示例:
"_id" : ObjectId("5b151f8536409809ab2e6b26")

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

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

   

  - 在Python中如果想序列化 Object ID 先用 str() 转换一下;

 

- String:

  - 正常的字符串....... 加引号括起来

 

- Boolean:

  - 布尔值 true 或者 false 首字母小写

 

- Integer:

  - 整数

 

- Double:

  - 双进准浮点数 就是 float

 

- Arrays:

  - 数组,等同于python中的list

 

- Object:

  - 对象,等同于python中的dict

 

- Null:

  - 空值,等同于python中的None

 

- Timestamp:

  - 时间戳;

 

- Date:

  - 存储当前日期或时间格式

  - 示例:

{
    "_id" : ObjectId("5b163ba1993ddc4cd4918eb2"),
    "name" : "LuffyCity",
    "date" : ISODate("2018-06-05T15:28:33.705+08:00")
}

 

 

MongoDB增删改查

- 常用基本语法:

  - MongoDB 引用了不存在的对象即创建改对象;

意思就是
    MongoDB中如果你使用了不存在的对象,那么就等于你在创建这个对象哦

    如果你创建的是表,但是表中没有实际数据,则这张表不会保存

 

  - 使用(创建)数据库:

    - 语法: use 数据库名字

    - 注意当 执行过上面的命令后,在MongoDB中 db 就代指当前是数据库

  - 创建表:

    - 语法: db.表名

 

- 查:

  - find():条件查找;

    - 无条件的话,默认查找当前表的所有数据;

    - db.表名.fiand({age:19}); 查找符合此条件的所有数据;

 

  - findOne():查找一条数据;

    - 无条件的话,默认查找当前表的第一条数据;

    - db.表名.findOne({age:19});加入条件的话,若有多条数据,返回最靠前的一条数据;

 

- 增:插入数据(insert     insertOne     insertMany)

  -  insert(): 插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐

  - insertOne(): 插入一条数据,官方推荐

  - insertMany(): 插入多条数据,无需参数控制,官方推荐

 

- 改:修改数据(update updateOne updateMany)

  - update({"name":"DragonFire"},{$set:{"age":21}}): 根据条件修改该条数据的内容

  - updateOne():  根据条件修改一条数据的内容,如出现多条,只修改最靠前的数据

  - updateMany(): 根据条件修改所有数据的内容,多条修改

  - updata 参数解析:

update命令格式:

  db.collection.update(criteria,objNew,upsert,multi)

参数说明:

    criteria:查询条件

    objNew:update对象和一些更新操作符

    upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。

    multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。

 

 

- 删:删除数据(remove):

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

MongoDB的其他用法

- MongoDB中的关键字:

  - 比较运算:

    - 等于: 就是冒号:

    - 大于:是 $gt

      - 示例:

 "score" : { $gt : 80 }   # 得到 "score" 大于 80 的数据

   

    - 小于: $lt

    - 大于等于:$gte

    - 小于等于:$lte

 

- MongoDB中update中修改器:

  - $set::根据key更改value

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

    - {$inc:{"score":1}}

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

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

    - 是在 Array(list) 的尾端加入一个新的元素  {$push : {"test_list" : 6}}

  - $pull : 进行删减,$pull 就是指定删除Array中的某一个元素 等同于python中的remove

  - $pop:指定删除Array中的第一个 或 最后一个 元素 等同于python中的pop

 

- MongoDB中Array补充用法:

  - $:"$"  在 update 中 加上关键字 就 变成了 修改器

  - {$set :{"test_list.0" : 9}} 这样就是对应 Array 中的下标进行修改了 "test_list.下标"

  - 使用 update的话, 满足条件的数据下标位置就会传递到 $ 字符中,在我们更新操作的时候就相当于 对这个位置 的元素进行操作

  - 简单说$ 就是一个索引;

 

 

pymongodb简单用法

 - 安装pymongodb:

  pip3 install pymongo

 

- 建立连接

import pymongo
from pymongo.collection import Collection

# 建立连接得到实例化对象
mongo_client = pymongo.MongoClient(host="127.0.0.1", port=27017)
# 使用数据库
db = mongo_client.day122
# 使用表
table = db.chat_test  # type: Collection

 

posted @ 2018-11-28 22:13  浮生凉年  阅读(328)  评论(0编辑  收藏  举报