MongoDB的安装及python的调用

MongoDB介绍

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

版本
  • 偶数为稳定版,如1.6.X,奇数为开发版,如1.7.X
  • 32bit的mongodb最大只能存放2G的数据,64bit就没有限制

MongoDB下载和安装

下载MongoDB
以下是一些主要步骤:
在这里插入图片描述
在这里插入图片描述
安装过程中,可能会遇到如下错误提示:
在这里插入图片描述
原因:没有足够的权限启动MongoDB服务器系统服务
解决方法:
以管理员身份进入命令提示你符,输入sc delete MongoDB
在这里插入图片描述
在data目录下新建文件
在这里插入图片描述
在这里插入图片描述

重新装一个MongoDB服务,在安装目录的bin中打开控制台窗口输入命令
mongod --dbpath=F:\install_APP\MongoDB\data\db --logpath=F:\install_APP\MongoDB\log\MongoDB.log --install --serviceName “MongoDB”
第一个路径表示的是数据存放地址;第二个路径表示日志存放文件
在这里插入图片描述
启动成功!

下载完成之后,需要将bin目录添加到环境变量中
在这里插入图片描述

MongoDB概念

SQL概念MongoDB概念说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
  1. 文档中的键/值对是有序的。
  2. 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
  3. MongoDB区分类型和大小写。
  4. MongoDB的文档不能有重复的键。
  5. 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。

命令提示符窗口启动Mongodb客户端

  • 在安装的bin目录下启动命令提示符,输入命令
mongo

在这里插入图片描述

  • 查看所有的库
show dbs

在这里插入图片描述

  • 选择数据库 (如果使用的数据库存在 则使用 不存在 则创建)
use 库名

在这里插入图片描述

  • 查看当前所在的数据库
db/db.getName()

在这里插入图片描述

  • 创建集合(即创建表)
db.createCollection("user")  #创建一个user的集合 在当前的库里

在这里插入图片描述

  • 查看当前库下的所有集合
show collections

在这里插入图片描述

  • 删除集合
db.集合名.drop()

在这里插入图片描述

添加数据INSERT
# 3.2 版本前
db.user.insert({'name':'lisi', 'age': 20})
db.user.insert([{'name':'lisi', 'age': 20}, {'name': 'wangwu', 'age': 30}])
# 3.2 版本后

# 插入一条文档数据
db.user.insertOne({'name':'lisi', 'age': 20})    

# 插入多条文档数据
db.user.insertMany([{'name':'lisi', 'age': 20},{'name': 'wangwu', 'age': 30}])
FIND 查询
# inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {title: 1, by: 1}) 

# exclusion模式 指定不返回的键,返回其他键
​db.collection.find(query, {title: 0, by: 0}) 

在这里插入图片描述

  • 查询一条 findOne()
db.集合名.findOne([条件],{key1:1[,[key2:1]]}) #查询一条数据  代表 显示哪些字段名

在这里插入图片描述

  • 统计数据条数 count
db.集合名.find([条件]).count()

在这里插入图片描述

  • 展开来查看 pretty()
db.集合名.find([条件]).pretty()

在这里插入图片描述

  • 查询条件的操作符
符号符号说明实例说明
$gt大于db.user.find({age:{$gt:18}})年龄大于18
$gte大于等于db.user.find({age:{$gte:18}})年龄大于等于18的
$lt小于db.user.find({age:{$lt:18}})年龄小于18
$lte小于等于db.user.find({age:{$lte:18}})年龄小于等于18
{key:value}等于db.user.find({age:18})年龄等于18
/值/模糊查询db.user.find({username:/小/})查询username中包含“小”字的文档
/^值/以…作为开头db.user.find({username:/^小/})查询username中以“小”字作为开头的文档
/值$/以…作为结尾db.user.find({username:/小$/})查询username中以“小”字作为结尾的文档
$in在…内db.user.find({age:{$in:[18,20,30]})查询年龄在18,20,30的文档
$nin不在…内db.user.find({age:{$nin:[18,20,30]}})查询年龄不在 1,20,30的文档
$ne不等于 !=db.user.find({age:{$ne:18}})查询年龄不为18的文档
  • AND 查询
db.集合名.find({条件一,条件二,,,})

在这里插入图片描述

  • OR 查询
db.集合名.find({$or:[{条件一},{条件二},,,]})

在这里插入图片描述

  • AND 和 OR 的使用
db.集合名.find({条件一,,,$or:[{条件1},{条件2}]})
#name为张三   年龄为10岁或者28岁的所有数据
db.user.find({name:"张三",$or:[{age:10},{age:28}]})  
  • LIMIT 取值
db.集合名.find().limit(num)   #从第0个开始取几个

在这里插入图片描述

  • skip 跳过几个
db.集合名.find().skip(num) #跳过几条数据

在这里插入图片描述

  • limit skip 配合使用
db.集合名.find().skip().limit(num) 

在这里插入图片描述

  • SORT 排序
# 1 为升序排列, -1是降序排列
db.集合名.find().sort({key:1|-1})  #升序或者降序

在这里插入图片描述

UPDATE 文档的修改

更新操作符 $set直接修改 $inc累加修改

在这里插入图片描述
在这里插入图片描述

  • 更新记录

3.2版本之前版本

# 只更新第一条记录
db.col.update({"count" : {$gt:1}} , { $set : {"test2" : "OK"}});

# 全部更新
db.col.update({"count" : {$gt: 3 }} , {$set : {"test2" : "OK"} }); 

3.2版本以后

# 只更新第一条记录
db.user.updateOne({'name':'lisi'}, {$inc:{'age':5}})

# 更新多条
db.user.updateMany({'name':'lisi'}, {$inc:{'age':5}})

在这里插入图片描述

REMOVE 文档的删除

3.2 版本之前

#默认将所有都匹配到的数据进行删除
db.集合名.remove(条件)

#只删除 第一个匹配到的数据
db.集合名.remove(条件,1)   

# 清空集合
db.集合名.remove({})

在这里插入图片描述
3.2 版本之后

#默认将所有都匹配到的数据进行删除
db.user.deleteMany({'age':{$gt: 0}})

#只删除 第一个匹配到的数据
db.user.deleteOne({'age':{$gt: 0}})
数据库删除与退出
  • 数据库删除
    删除之前 最好use一下
db.dropDatabase()
  • 数据库的退出
exit

Python操作MongoDB

  • 安装库
pip install pymongo
  • 导入 pymongo
from pymongo import MongoClient
  • 连接 MongoDB
conn = MongoClient("localhost")
MongoClient(host='127.0.0.1',port=27017)
  • 连接数据库
db = conn.test
  • 连接集合
collection = db.user
  • 案例
from pymongo import MongoClient

# 连接mongodb
conn = MongoClient('localhost')
# 选择数据库
db = conn.test

# 插入一条数据
data = db.user.insert_one({"name": "lucky", 'age': 18, 'sex': 'man'})
# 插入多条数据
data = db.user.insert_many([{"name": "zhangsan", 'age': 20, 'sex': 'women'},{"name": "lucky", 'age': 18, 'sex': 'man'}])

# 查询所有
data = db.user.find()
print(next(data))
for i in data:
     print(i)
# 查询一条
data = db.user.find_one()
# 添加条件查询
data = db.user.find({"name": "lucky"})
# 模糊查询
data = db.user.find({"name": re.compile('l')})
data = db.user.find({"name": re.compile('z')})

# 修改一条
data = db.user.update_one({'name': 'lucky'},{'$set':{'age': 20}})
# 修改多条
data = db.user.update_many({'name': 'lucky'},{'$set':{'age': 18}})

# 删除一条
data = db.user.delete_one({'name': 'zhangsan'})
# 删除多条
data = db.user.delete_many({'name': 'lucky'})

conn.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值