【db】mongodb的故事

pymongo

mongodb你可以理解为一个json数据库,用起来真的很方便。
带着问题去学习?
终极目标,爬取b站里面粉丝在1万以上的用户,统计这些用户的起名规律
mongodb怎么进行翻页操作?

mongodb如何进行数据分析?
数据分析的关键是聚合查询

mongodb怎么去查询列表里面的元素是否满足某个条件?
使用$elemMatch

mongodb可以只取出某一个字段吗?
Return the Specified Fields(获取指定的字段)
在这里插入图片描述

看一看下面四个服务有什么相同点和区别?
mysql,mongodb,redis,elasticsearch

名字特点
mysql关系型数据库 行和列
redis缓存数据库,键值对
elasticsearch可以做搜索引擎
mongodb

这几个数据库,对于使用者来说,其实都是黑盒的,但是不同的数据库特点不一样,使用方法也不同,不同的场景下各有千秋。
mongodb的数据分析能力不如mysql

入门

入门指导

安装

通过官网下载tar文件
解压后得到 mongodb-macos-x86_64-4.2.5

启动

cd mongodb-macos-x86_64-4.2.5/bin
sudo ./mongod 启动mongodb服务
一定要有sudo

客户端

python客户端
pip3 install pymongo
shell客户端
./mongo
gui客户端
在这里插入图片描述

数据结构

文档
JSON格式

概念

dbs,切换数据库
在这里插入图片描述
collections,查看collections在这里插入图片描述
document

CURD

insert data into mongodb(插入数据)

db.foo.insertOne(
   { "item" : "canvas",
     "qty" : 100,
     "tags" : ["cotton"],
     "size" : { "h" : 28, "w" : 35.5, "uom" : "cm" }
   }
)

read data from mongodb(读取数据)

注意:mongodb读取数据返回了一个游标

myCursor = db.foo.find( {} )

while (myCursor.hasNext()) {
    print(tojson(myCursor.next()));
}

read data from mongodb with queries(查询)

Read Data using Operators and Compound Queries

myCursor = db.inventory.find( { "size.h": { $lt: 15 } } )

Update Data in MongoDB

1.修改一个

    { "item" : "paper" }, // specifies the document to update
    {
      $set: {  "size.uom" : "cm",  "status" : "P" },
      $currentDate: { "lastModified": true }
    }
)
  1. 修改多个
db.inventory.updateMany(
    { "qty" : { $lt: 50 } }, // specifies the documents to update
    {
       $set: { "size.uom" : "cm", "status": "P" },
       $currentDate : { "lastModified": true }
    }
)

delete data from MongoDB

  1. 删除一个document
db.inventory.deleteOne(
    { "status": "D" } // specifies the document to delete
)
  1. 删除多个document
db.inventory.deleteMany(
    { "status" : "A" } // specifies the documents to delete
)

mongodb状态查看

例如我想查看db存储大小
例如我想查看collection的存储大小
在这里插入图片描述
也就是说百万行存储大小在22M做左右。为什么存储大小比数据大小要小很多?

使用pymongo作为客户端的语法

posted @ 2022-03-06 10:38  叶常落  阅读(19)  评论(0编辑  收藏  举报