掌握MongoDB,看完这篇文章就够了!!!

目录

1. MongoDB简介

2.MongoDB安装

3.MongoDB操作

3.1 数据库相关

3.2 集合相关

3.3数据相关

4.MongoDB查询

5.MongoDB常用技术

6.Python与MongoDB


1. MongoDB简介

MongoDB是一种NoSQL数据库管理系统,采用文档数据库模型,由MongoDB Inc.开发并发布。作为一个面向文档的数据库,MongoDB的数据存储形式类似于JSON对象,适合存储结构化、半结构化和非结构化数据。

以下是MongoDB的一些特点和优势:

  1. 灵活的数据模型: MongoDB使用了类似于JSON格式的文档存储数据,这意味着每个文档可以具有不同的结构,而不像传统的关系型数据库需要遵循固定的表结构。

  2. 高性能: MongoDB具有出色的性能特性,支持快速的查询操作和数据读写。它还提供了内置的分片和复制功能,以实现水平扩展和高可用性。

  3. 强大的查询语言: MongoDB支持丰富的查询表达能力,包括范围查询、正则表达式、聚合操作等,以满足各种数据查询需求。

  4. 自动分片和负载均衡: MongoDB能够自动将数据分布到多个节点中,实现数据的分片存储,并通过负载均衡来提高整体性能和可扩展性。

  5. 容易部署和管理: MongoDB的部署和管理相对简单,具有较低的维护成本。它提供了丰富的工具和文档,帮助用户轻松管理数据库。

  6. 社区支持和生态系统: MongoDB拥有庞大的开发者社区和丰富的生态系统,用户可以获得大量的资源、工具和支持。

  7. 适用于大数据和实时数据处理: MongoDB适用于大规模数据存储和实时数据处理场景,如大型网站、应用程序后端、日志存储等。

尽管MongoDB具有许多优势,但在选择数据库系统时,需要根据具体的项目需求和情况来评估是否适合使用MongoDB。对于某些特定的应用场景,如需要复杂的事务支持或强一致性要求的系统,可能需要考虑传统的关系型数据库系统。

MongoDB级别组织:集合Collection——相当于表;文档——相当于列

2.MongoDB安装

下载MongoDB并安装配置环境变量,同MySQL配置类似,在此不做详述。

配置完成后按住win+r键,输入cmd回车,在弹出的黑窗口输入以下代码,回车输入密码,若显示以下图片极为安装成功。

3.MongoDB操作

3.1 数据库相关

1.显示所有数据库

输入一下代码,回车,如图所示的就是现有的数据库,为系统自带,不可随意修改。

show dbs

2.创建数据库

输入以下代码创建数据库,如果数据库不存在,则创建并使用,数据库存在则切换。

创建完成后重新查看数据库,不会显示,因为此时数据库为空。

use datas

3.删除数据库

先使用上述语句切换到要删除的数据库,然后进行删除操作,注意:mongo数据库区分大小写。

db.dropdataBase()

3.2 集合相关

1.查看所有集合

show collections

2.创建集合

创建一个名为teacher的集合,可以创建也可以不创建,使用到某个集合时会自动创建该集合。

 db.createCollection("teacher")

3.删除集合

# db.集合名.drop()
 
db.teacher.drop()

3.3数据相关

1.插入数据

插入数据时,注意MongoDB是非关系型数据库,可以插入不同的形式。插入时自动创建id。

(1)插入:可以插入一个或多个,注意是“字典”格式

 db.teacher.insert({"name":"t1"})

(2)插入一个

 db.teacher.insertOne({"name":"t2"})

(3)插入多个

可以插入不同结构数据。

db.teacher.insertMany([{"name":"t4","age":25},{"name":"t3"}])

2.查询数据

(1)查询所有

db.teacher.find()

(2)查询一个

 db.teacher.findOne()

3.修改数据

(1)修改:将逗号前面的集合修改为逗号后面的,再次查询可以看出修改成功


db.teacher.update({"name":"t1"},{"age":15})

(2)修改一个

db.teacher.updateOne({"name":"t4"},{$set:{"age":55}})

(3)修改多个:

将“age”为10 的集合的name修改为“abcd”

 db.teacher.updateMany({"age":20},{$set: {"name":"abcd"} })

4.删除数据

(1)删除一个

db.teacher.deleteOne({"age":15})

(2)删除多个:将“age”为20的集合删除

db.teacher.deleteMany({"age":20})

4.MongoDB查询

1.比较运算符

$gt

grate than

>

$gte grate than equal >=
$lt less than <
$lte less than equal <=
$ne not equal !=

用法:

 db.teacher.find({"age":{$gt:20}})
db.teacher.find({"age":{$gte:20}})

2.逻辑运算符

(1)并且

> db.teacher.find({"age":10,"age":20})

(2)or

 db.teacher.find({$or: [{"age":15},{"age":20}] })

(3)成员in

db.teacher.find({"age":{$in:[15, 20]}})

(4)正则,详见正则使用

# 查找名字中以t开头

db.teacher.find({"name":/^t/})

(5)自定义

# 查找年龄大于18
db.teacher.find({$where:function(){return this.age > 18}})

5.MongoDB常用技术

1.排序

 # 1为正序
db.teacher.find().sort({"age":1})
# -1为逆序
db.teacher.find().sort({"age":-1})

2.分页

(1)显示个数

db.teacher.find().limit(3)

(2)从几开始显示几个

 db.teacher.find().limit(3).skip(2)

3.统计个数

db.teacher.count()

4.投影

db.teacher.find({}, {"name":1})

db.teacher.find({}, {"age":1})

 db.teacher.find({}, {"_id":0})

5.聚合

对数据进行处理,将上一阶处理结果转交给下一阶

db.orders.aggregate([
    {
        $project: {
            total: { $multiply: ["$quantity", "$price"] },
            item: 1
        }
    },
    {
        $group: {
            _id: "$item",
            totalSales: { $sum: "$total" }
        }
    }
])

6.Python与MongoDB

1.使用模块pymongo

终端安装命令:

pip install pymongo

2.使用流程

1.导入模块

2.创建连接

3.找到数据库

4.找到集合

5.增删改查操作

6.关闭连接

# 1.导入模块
import pymongo
# 2.构建连接
client = pymongo.MongoClient()
# 3.找到数据库
db = client.get_database("datas")
# 4.找到集合
collection = db.get_collection("teacher")
# 5.增删改查操作
# 查找
cursor = collection.find()
for data in cursor:
    print(data)
# 6.关闭连接
cursor.close()

相关推荐

  1. 掌握mysql,文章

    2024-03-12 02:52:04       25 阅读
  2. 掌握mysql,文章

    2024-03-12 02:52:04       24 阅读
  3. TypeScript

    2024-03-12 02:52:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-12 02:52:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-12 02:52:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-12 02:52:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-12 02:52:04       18 阅读

热门阅读

  1. 嵌入式学习 Day 31

    2024-03-12 02:52:04       20 阅读
  2. redis进阶以及springboot连接使用redis

    2024-03-12 02:52:04       24 阅读
  3. LeetCode 第 388 场周赛个人题解

    2024-03-12 02:52:04       20 阅读
  4. DDL、DML 和 DQL区分

    2024-03-12 02:52:04       21 阅读
  5. oracle 数据链接过多,导致后续链接链接不上

    2024-03-12 02:52:04       22 阅读
  6. 开发总结12-call、apply、bind区别

    2024-03-12 02:52:04       20 阅读
  7. ZYNQ--GT收发器(TX)

    2024-03-12 02:52:04       20 阅读
  8. PYTHON 120道题目详解(97-99)

    2024-03-12 02:52:04       18 阅读
  9. 把flask 项目部署在windows上步骤

    2024-03-12 02:52:04       18 阅读
  10. flutter无法在windows平台上拖拽文件到它的窗口中

    2024-03-12 02:52:04       16 阅读