Python使用MongoDB简记

《MongoDB使用简记》

  常用的数据库就是关系型数据库MySQL、Oracle以及非关系型数据库Redis、HBase等,数据库和基础数据结构一样,无非就是增、删、改、查,根据不同的场景来选择关系型数据库和非关系型数据库,然后了解该数据库是如何增、删、改、查的就OK,本文简单记录了MongoDB的使用教程

Key Words:MongoDB、增删改查、Python


Beijing, 2020

作者:RaySue

Code:

Agile Pioneer  

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

查数据
https://www.cnblogs.com/qikeyishu/p/10720103.html

https://www.cnblogs.com/baijinshuo/p/10277390.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值