一文带你解决MongoDb从安装到使用

发布时间:2023-03-24 11:00

一文解决MongoDb从安装到使用

一文带你解决MongoDb从安装到使用_第1张图片

文章目录

  • 一文解决MongoDb从安装到使用
  • 参考
  • 前言
  • 一、MongoDB 安装
    • 修改mongodb启动端口,并设置外网可访问
    • mongodb 数据库重启
    • 配置系统变量
    • 用户创建
    • 用MongoDBCompass连接
  • 二、用 Python 连接mongodb
    • 数据库连接
    • 数据查找
    • 数据插入
    • 数据删除
    • 数据更新
  • 查询条件


参考

  • 文章1
  • 文章2
  • 文章3

前言

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

正是因为上述特点,mongodb 数据库对前端数据的格式非常友好,上手操作起来也比较快。


一、MongoDB 安装

我们直接去mongodb官网进行下载https://www.mongodb.com/try/download/community
一文带你解决MongoDb从安装到使用_第2张图片
下载得到安装包后一路默认就好,这个过程会默认下载MongoDBCompass(mongodb数据库的可视化工具)所以需要等一会。
此时我们可以访问http://localhost:27017/,若出现下图结果则说明安装成功。

安装好后mongodb会默认启动并且默认的端口为27017

一文带你解决MongoDb从安装到使用_第3张图片

修改mongodb启动端口,并设置外网可访问

先找到下载好的mongodb文件夹,默认的话可以按照下图的文件路径找,然后打开其中的mongod.conf文件
一文带你解决MongoDb从安装到使用_第4张图片
文件中默认内容如下

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: C:\Program Files\MongoDB\Server\5.0\data
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  C:\Program Files\MongoDB\Server\5.0\log\mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

修改mongodb默认端口以及外网可访问
我们修改

  port: 27017
  bindIp: 127.0.0.1

  port: 668
  bindIp: 0.0.0.0

设置连接需密码验证

默认事不需要密码就可以连接的,所以很不安全
修改

#security:

security:
  authorization: enabled

此时我们重启mongodb数据库即可让配置生效

mongodb 数据库重启

打开任务管理器,在服务中找到Mongodb,并选择重新启动
一文带你解决MongoDb从安装到使用_第5张图片
启动成功后可访问http://localhost:668/若出现下图则说明重启并配置成功
一文带你解决MongoDb从安装到使用_第6张图片

配置系统变量

先打开高级系统设置,进入双击进入环境变量设置
注意: 添加的路径要跟自己安装下载mongodb的位置有关
一文带你解决MongoDb从安装到使用_第7张图片
查看是否配置成功
打开命令行执行

mongo -port=668

(这里事因为我们之前修改了端口需要自己指定),出现下图结果说明启动成功
一文带你解决MongoDb从安装到使用_第8张图片

用户创建

紧接着上一步操作
我们继续再命令行中输入
使用管理员权限

use admin

在这里插入图片描述
创建root用户

这里根据自己的需求设置用户名密码,
设置roles为root设置该用户为超级管理员(就是没啥操作限制)

db.createUser({user:"root",pwd:"ywh",roles:["root"]})

在这里插入图片描述

查看已经成功创建的用户

show users

一文带你解决MongoDb从安装到使用_第9张图片

到这我们就成功创建好一个超级用户了,后面我们通过MongoDBCompass进行连接

用MongoDBCompass连接

设置连接信息
修改URL下的内容为

mongodb://root:ywh@localhost:668?authSource=admin&readPreference=primary&directConnection=true&ssl=false

对应的格式为:

mongodb://用户名:密码@ip:mongodb的端口?authSource=admin&readPreference=primary&directConnection=true&ssl=false

一文带你解决MongoDb从安装到使用_第10张图片
设置好后点Connect进行连接,再成功连接后我们可以按照下图操作步骤创建一个库以及表
一文带你解决MongoDb从安装到使用_第11张图片
创建成功后就会看到下面,多了一个数据库的信息,我们可以点击进入。
一文带你解决MongoDb从安装到使用_第12张图片
点进入数据test表查看表中的详细信息
一文带你解决MongoDb从安装到使用_第13张图片
刚开始表中当然是没数据的,我们可以进行插入操作
一文带你解决MongoDb从安装到使用_第14张图片
成功插入数据的结果

一文带你解决MongoDb从安装到使用_第15张图片

二、用 Python 连接mongodb

先下载使用的包

pip install pymongo

数据库连接

根据自己的mongodb配置进行连接信息的修改

from pymongo import MongoClient

def connect(ip="localhost",port="668",databaseName="MongoDemo",schemaName="txt"):
    """
        :param url: ip地址
        :param port_id:连接数据库的端口  默认为688
        :param databaseName:  对应的数据库名字
        :param schemaName: 操作的表明
        :return schema: 表的实体
    """
    db = MongoClient(f"mongodb://ywh:ywh123@{ip}:{port}")
    my_db = db[databaseName]           #打开对应的数据库
    schema = my_db[schemaName]         #打开数据库的中的表
    return schema

数据查找

主要是用 findfind_one这两个函数进行查找, 增删改查都类似的,后面就只讲多条的操作。

class MongoFind(object):
    def __call__(self):
        pass
    
    @staticmethod
    def findall(filterOption={},schemaName="txt"):
        """
            ## 查询多条

            :pramas filterOption: 条件
            :pramas schemaName:  表名
        """
        schema = connect(schemaName=schemaName)
        # 空条件为查询全部
        data = schema.find(filterOption)
        resData = [item for item in data]
        return resData

    @staticmethod
    def findOne(filterOption={},schemaName="txt"):
        """
            ## 查询单条

            :pramas filterOption: 条件
            :pramas schemaName:  表名
        """
        schema = connect(schemaName=schemaName)
        data = schema.find_one(filterOption)
        print(data)

数据插入

def insertData():
    schema = connect()
    more_data = [
		{'id': 2, 'name': '张三', 'age': 10, 'salary': 0},
		{'id': 3, 'name': '李四', 'age': 30, 'salary': -100},
		{'id': 4, 'name': '王五', 'age': 40, 'salary': 1000},
        {'id': 5, 'name': '外国人', 'age': 50, 'salary': '未知'}]
    # 返回插入数据对应的id
    InsertManyResult = schema.insert_many(more_data)
    print(InsertManyResult.inserted_ids)

数据删除

def delData():
    schema = connect()
    data = schema.delete_many({})
    print(data)

数据更新

def updateData():
    schema = connect()
    schema.update_many({"name":"张三"},{"$set":{"age":100}})

查询条件

符号 含义 示例
$lt 小于 {‘age’: {‘$lt’: 20}}
$gt 大于 {‘age’: {‘$gt’: 20}}
$lte 小于等于 {‘age’: {‘$lte’: 20}}
$gte 大于等于 {‘age’: {‘$gte’: 20}}
$ne 不等于 {‘age’: {‘$ne’: 20}}
$in 在范围内 {‘age’: {‘$in’: [20, 23]}}
$nin 不在范围内 {‘age’: {‘$nin’: [20, 23]}}

例如

{'age': {'$in': [20, 23]}}

代表查询age为20或者23的。

正则匹配查询

符号 含义 示例 含义
$regex 匹配正则表达式 {‘name’: {‘$regex’: ‘^Y.*’}} name以Y开头
$exists 属性是否存在 {‘name’: {‘$exists’: True}} name属性存在
$type 类型判断 {‘age’: {‘$type’: ‘int’}} age的类型为int
$mod 数字模操作 {‘age’: {‘$mod’: [5, 0]}} 年龄模5余0
$text 文本查询 {‘KaTeX parse error: Expected '}', got 'EOF' at end of input: text': {'search’: ‘Mike’}} text类型的属性中包含Mike字符串
$where 高级条件查询 {‘$where’: ‘obj.fans_count == obj.follows_count’} 自身粉丝数等于关注数

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号