《MongoDB使用简记》
常用的数据库就是关系型数据库MySQL、Oracle以及非关系型数据库Redis、HBase等,数据库和基础数据结构一样,无非就是增、删、改、查,根据不同的场景来选择关系型数据库和非关系型数据库,然后了解该数据库是如何增、删、改、查的就OK,本文简单记录了MongoDB的使用教程
Key Words:MongoDB、增删改查、Python
Beijing, 2020
作者:RaySue
Code:
MongoDB 简介
传统的关系数据库(如MySQL)一般由数据库(Database)、表(Table)、记录(Record)三个层次概念组成,相应的MongoDB是由数据库(Database)、集合(Collection)、文档对象(Document)三个层次组成。
MongoDB稳定,MongoDB支持索引,索引放在内存中,能够提升随机读写的性能。如果索引不能完全放在内存,一旦出现随机读写比较高的时候,就会频繁地进行磁盘交换,MongoDB的性能就会急剧下降,MongoDB占用的空间很大,因为它属于典型空间换时间原则的类型。那么它的磁盘空间比普通数据库会浪费一些。
MongoDB是一个基于分布式文件存储的数据库。由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最丰富,最像关系数据库的。
MongoDB安装
Mac 安装
两种方式:
- 安装包
- brew
参见:https://www.runoob.com/mongodb/mongodb-osx-install.html
Linux 安装
参见:https://www.runoob.com/mongodb/mongodb-linux-install.html
MongoDB常用命令
-
输入
mongo
进入MongoDB数据库 -
每条数据都必须有的字段是 “_id” 用于唯一标识,如果不指定就会随机生成一个uuid用于唯一标识,如果insert的数据与表中的 _id 相同就会报错,插入失败
- 增
-
创建库
- mongodb 的库是隐式创建,你可以 use 一个不存在的库,然后在该库下创建collection,即可创建库
- use xDB
-
创建名为 xxx 的 collection(表)
- db.createCollection(‘xxx’)
- collection 允许隐式创建 db.collectionName.insert(document);
- 其中 document={‘a’:1}
-
添加一条数据(隐式创建,如果不存在就创建)
- db.collectionName.insertOne(document);
- db.collectionName.insert(document);
- 删
-
删除数据库(删除哪个要先use哪个)
- db.dropDatabase()
-
删除 collection(表)
- db.collectionName.drop();
- 改
-
s e t set set
- 对course下的score为100的添加一个price字段和对应的值
- db.course.updateOne({“score”:100},{$set:{“price”:99.8}})
- 对已经存在的字段就是直接修改值了
-
u n s e t unset unset
- 删除某个field,比如price
- db.course.updateOne({“score”:100},{$unset:{“price”:1}})
-
p u s h push push
- 对第一条数据某个字段添加一条数据:
- db.course.updateOne{{},{$push:{“name”:“surui”}}}
- 对所有数据添加一条数据:
- db.course.updateMany{{},{$push:{“name”:“surui”}}}
- {“name”:[“surui”, “surui”]}
-
p o p pop pop
- 删除某个字段的最后一条数据
- db.course.updateOne{{},{$pop}}
- db.course.updateMany{{},{$pop}}
- 查
-
查看当前的数据库
- show dbs;
-
查某个库下的所有表
- use DataBaseName
- show tables/collections
-
查表a下的数据
- db.a.findOne() // 查一条
- db.a.find() // 查所有
-
查表a下的数据的个数
- db.a.find().count();
-
条件限制查询
- db.a.find({‘name’:‘xxx’}) // 查所有name为xxx的数据记录
- db.a.find({prices:{’$gte’:10}}) // 查prices字段大于10的
退出 exit
数据库
Python使用MongoDB
-
先后台启动 mongo 服务
mongod --dbpath mdb --logpath 日志位置 --fork
- mdb是当前的一个文件夹,需要提前创建
- 日志指定一个具体的文件即可
-
杀死进程的命令: kill -2 ${PID}
import pymongo
client = pymongo.MongoClient()
db = client['库名']
collection = db['collection名'] # 如果没有就会自动创建
# 返回collection下的所有内容
data_dict = collection.find()
# 修改id为1的key值
collection.update({'_id': 1}, {"$set": {"key": 1}})
# 添加一条数据
collection.insert_one(new_data_dict)
注意
table的名字不可以是数字组成的字符串,比如 “123456”
参考
创建
https://www.cnblogs.com/xiaozhaoboke/p/11479313.html