MongoDB

目录

MongoDB介绍
安装与配置
Navicat连接
MongoDB操作
python连接MongoDB

MongoDB介绍

NoSQL:全称Not only SQL,意为不仅仅是SQL,泛指非关系型数据库。

MongoDB是一个基于分布式文件存储的非关系数据库,由C++语言编写。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

它的特点是高性能易部署易使用存储数据非常方便。主要功能特性有:

  • 面向集合存储,易存储对象类型的数据。

  • 模式自由。

  • 支持动态查询。

  • 支持完全索引,包含内部对象。

  • 支持查询。

  • 支持复制和故障恢复。

  • 使用高效的二进制数据存储,包括大型对象(如视频等)。

  • 自动处理碎片,以支持云计算层次的扩展性。

  • 支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

  • 文件存储格式为BSON(一种JSON的扩展)。

  • 可通过网络访问

安装与配置

1.在MongoDB官网下载

2.安装

安装过程中选择Custom可自定义MongoDB的安装目录

可选择是否勾选Install MongoDB Compass来选择是否安装图形化工具Compass

3.配置

配置环境变量,这里说明一下配置环境变量的意义,配置环境变量是为了随时随地能启动该目录下的.exe文件

第一步右键打开属性,也可直接打开设置

第二步搜索高级系统设置

第三步点击环境变量

第四步在系统变量下方找到Path并双击

第五步新建并将MongoDB安装目录下的bin目录地址放入

4.配置成功

打开cmd并输入mongod,出现如下界面则说明配置成功:

在这里插入图片描述

  • 注意MongoDB6.0版本之后,MongoDB将不再默认安装shell工具,此时当用户打开终端输入mongo命令后将报如下错误:

    在这里插入图片描述

    此时我们需要在MongoDB官网下载[MongoDB shell压缩包](MongoDB Shell Download | MongoDB)并将解压后的.exe两个文件放入MongoDB安装目录下的bin目录下面:

在这里插入图片描述

在这里插入图片描述

下一步在cmd中mongosh,出现如下界面则说明服务启动成功:

在这里插入图片描述

若想关闭服务,在此页面连续按下两次Ctrl+c

Navicat连接

在这里插入图片描述

填入连接名,点击测试连接:

在这里插入图片描述

MongoDB操作

#清屏
cls

#查看命令帮助
help

#断开连接
exit

增:

  • MongoDB中默认的数据库为test
#创建数据库,数据库存在时转换至该数据库
use 库名

#创建集合
db.createCollection('users')

#创建集合同时插入数据
db.users.insert({name:"樊狗",age:30,level:4,email:"678@qq.com"})
db.users.insertOne({name:"蔚徐坤",age:50,level:1,email:"123@qq.com"})
db.users.insertMany([{name:"赖某",age:22,level:10,email:"2260@qq.com"},{name:"高先森",age:37,level:3,email:"3456@qq.com"},{name:"李少",age:27,level:5,email:"777@qq.com"},{name:"马保国",age:37,level:10,email:"349@qq.com"}])

删:

#删除数据库(先切换至需要删除的数据库)
db.dropDatabase()

#删除当前数据库中指定的集合
db.集合名.drop()

#删除集合中某条数据
db.users.deleteOne({age:22})

#删除集合中的所有数据,db.users.remove({},{justOne:true/false}),true时只删除一条,默认为false
db.users.deleteMany({name:"张三"})
db.users.remove({name:"张三"})

#删除一条数据并返回显示被删除的数据
db.users.findOneAndDelete({name:"张三"})

改:

#update({query},{update},{multi:boolean}),query为查询条件
db.users.update({name:"高先森"},{$set:{age:38}})
db.users.updateOne({name:"高先森"},{$set:{age:37}})
db.users.updateOne({name:"高先森"},{$set:{age:37}},{multi:true})
db.users.updateMany({name:"高先森"},{$set:{age:38}})
db.users.updateOne({name:"高先森"},{$inc:{age:5}})

查:

  • 刚刚创建的数据库使用show dbs不会显示,需要向数据库插入数据才会显示
  • 当skip(),sort(),limit()三个函数放在同一语句中时,执行顺序先后:sort(),skip(),limit()
#查看当前版本
db.version()

#查询所有数据库
show dbs

#查询当前数据库中的所有集合
show collections

#查询集合中的所有数据
db.users.find()

#查询符合条件的所有结果
db.users.find({age:50})

#查询符合条件的第一条结果
db.users.findOne({age:37})

#limit()限制返回结果的数量
db.user.find().limit(1)

#skip()跳过查询结果,此处跳过前两条结果
db.users.find().skip(2)

#sort()排序查询结果
db.user.find().sort({level:1})
db.user.find().sort({level:-1})
db.user.find().sort({level:1}).limit(2)
db.user.find().sort({level:-1,name:1})

#只查询某价值对结果信息
db.users.find({},{name:1})

#查询除某键值对的所有信息
db.users.find({},name:0})

#比较运算符(单引号可有可无)
db.users.find({age:22})
db.users.find({age:{'$eq':22}})
db.users.find({age:{'$gt':22}})
db.users.find({age:{'$lt':30}})
db.users.find({age:{'$lte':22}})
db.users.find({age:{'$gte':22}})
db.users.find({age:{'$ne':22}})

#逻辑运算符(单引号可有可无)
db.users.find({level:10,name:"马保国"})
db.users.find({level:{$exists:true}})

#范围运算符
db.users.find({age:{$in:[22,37]}})
db.users.find({age:{$nin:[22,37]}})

#模糊查询
db.users.find({name://})
db.users.find({name:/^某/})
db.users.find({name:{$regex:'^赖'}})
db.users.find({name:/某$/})

#统计数量
db.users.find().count()
db.users.count({age:22})
python连接MongoDB

1.准备工作

  • 安装好MongoDB并启动了其服务
  • 安装好Pymongo库

2.连接MongoDB

import pymongo

#连接数据库,创建连接对象client
client = pymongo.MongoClient(host='localhost',port='27017')

#指定数据库,数据库不存在时将创建
db = client.test
db = client['528']

#指定集合对象,该集合不存在时将创建
users = db['users']

#插入数据
student = {
    'name' : '张三',
    'age' : 25,
    'level' : 4
}
users.insert_one(student)

student1 = {
    'name' : 'nb',
    'age' : 37,
    'level' : 7
}
student2 = {
    'name' : 'wd',
    'age' : 79,
    'level' : 5
}
users.insert_many([student1,student2])

#查询,find()返回结果为Cursor类型,相当于一个生成器
all1 = users.find()
for i in all:
    print(i)
all2 = users.find({'level':10})   
one = users.find_one()
two = users.find_one({'age':22})
three = users.find_one({'age':{'$gte':20}})

#计数统计
count = users.find().count()
#排序
result = users.find().sort('age',pymongo.ASCENDING)
result = users.find().sort('age',pymongo.DESCENDING)

#偏移
result = users.find().skip(2)

#更新
conditon = {'name':'ljf'}
user = users.find_one(condition)
user['name']  = 'll'
users.update_one(conditon,{'$set':user})

#删除
user.delete_one({'name':'ll'})
user.delete_many({'age':22})
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值