Python操作MongoDB数据库

Posted 醉蕤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python操作MongoDB数据库相关的知识,希望对你有一定的参考价值。

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

学习日记

目录

学习日记​​​​​​​

一、前言介绍

1、类比

2、MongoDB特点:

二、安装MongoDB库

 三、MongoDB相关

1、概念

2、数据类型

Warn:

四、 MongoDB的基本使用

1、启动MongoDB服务端

2、启动MongoDB客户端

五、MongoDB常用命令

1、数据库操作

2、集合操作

六、MongoDB的增删改查

1、增(插入数据)

2、删(删除数据)

3、改(修改数据)

4、查(查询数据)

七、Python连接MongoDB

1、指定地址和端口连接

2、通过URI连接


一、前言介绍

1、类比

SQL:结构化查询语言.用于操作关系型数据库。
NoSQL:非关系型数据库。不能使用SQL。
MongoDB数据库是一种NoSQL数据库,是一个开源的数据库系统。

2、MongoDB特点:

(1)用于web用户的数据存储

(2)数据结构:key - value

(3)存储文档类似于JSON

二、安装MongoDB库

在win+r输入cmd后输入指令下载

pip install pymongo

 这样即安装完成。

 三、MongoDB相关

1、概念

2、数据类型

Warn:


   每个文档都有一个不同的属性(_id),保证每个文档的唯一性。可手动设置_id的值,没有手动设置则会自动提供一个独特的_id,类型为objectID。objectID是一个12字节的十六进制数,每个字节两位,一共是24位的字符串:
                                             前4个字节(8位)为时间戳
                                             接下来的3个(6位)是机器ID
                                             再然后2个(4位)是MongoDB服务进程ID
                                             最后3个(6位)是简单的增量值
 

四、 MongoDB的基本使用

1、启动MongoDB服务端

启动/停止/重启:                 sudo service mongod start/stop/restart
验证数据库是否正常启动:     grep -v '#' /etc/mongod.conf

启动方式:    sudo mongod [--dbpath] [--logpath] [--append] [--fork] [--auth] [-f]

不带参数时,要手动创建数据存储目录/data/db

--dbpath:指定数据库的存储路径

--logpath:指定日志的存放路径

--append:设置日志的写入形式为追加

--fork:开启新的进程运行MongoDB服务

--auth:以权限认证的方式启动

-f 路径:设置配置文件路径

验证是否启动成功:      ps -aux | grep mongod

 

2、启动MongoDB客户端

启动:mongo
退出:exit
查看帮助:mongo -help

五、MongoDB常用命令

1、数据库操作

查看当前数据库:db

查看所有数据库:show dbs

切换数据库:use 数据库名

删除当前数据库:db.dropDatabase()

2、集合操作

自动创建集合:   向不存在的集合中第一次添加数据时,集合会被自动创建
手动创建:
db.createCollection("集合名")

db.createCollection("集合名",capped:true,size:x)

capped:默认值为false,表示没有上限,true则为设置上限

size:集合所占用的最大上限字节数,超出上限则会覆盖之前的数据

查看集合:show collections

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

检查集合是否设有上限:db.集合名.isCapped()

六、MongoDB的增删改查

1、增(插入数据)

单条插入:db.集合名.insert(数据)
db.name.insert("cjl":19)

多条插入:db.集合名.insert([数据1,数据2])
db.name.insert(["cjl":19,"syf":20])

2、删(删除数据)

db.集合名.remove(查询条件,justOne:boolean)

justOne:默认false删除全部符合条件的,true删除一条
db.name.remove("age":18,justOne:true)
 

3、改(修改数据)

保存:db.集合名.save(_id:"xxx")
通过_id定位到数据,如果存在则修改该数据,不存在则新增该数据
db.name.save(_id:"xxx","name":"cjl")

更新:db.集合名.update(查询条件,更新操作符,multi:boolean)
multi:默认false只更新第一条,true全部更新,必须和$set一起使用

全文档覆盖更新
db.name.update(name:'x',name:'y')

指定键值更新:
db.name.update(name:'x',$set:name:'y')

更新全部
db.name.update(,$set:age:18,multi:true)

4、查(查询数据)

db.集合名.find(条件)                       查询该集合内的所有符合条件的数据
.pretty()                                             格式化输出
db.集合名.findOne(条件)                查询该集合内的第一条数据
db.集合名.find(条件).count()           统计个数查询
db.集合名.distinct("xxx",条件)         去除重复查询
相关查询条件:

比较运算符:
小于:$lt                                                小等:$lte
大于:$gt                                               大等:$gte
不等:$ne

逻辑运算符:
与关系:$and
简洁格式:db.name.find(age:$gt:18,sex:true)
复杂格式:db.name.find($and:[age:$gt:18,sex:true])
 

或关系:$or
db.name.find($or:[age:$gt:18,sex:true])

范围运算符:
包含:$in
db.name.find(age:$in:[18,19,20])
不包含$nin
db.name.find(age:$nin:[18,19,20])
 

正则表达式
正则表达式:$regex
db.name.find(name:$regex:'^c')

七、Python连接MongoDB

    通常有两种方式连接MongoDB数据库,一种是通过指定地址和端口直接连接,另一种是将连接地址拼接成URI的格式进行连接。

1、指定地址和端口连接

import pymongo

client = pymongo.MongoClient(host='localhost',port=3717,username='root',password='root')
# 连接数据库
db = client.testDatabase 
# 连接到users集合
users= db.users

print(db.list_collection_names()) # 获取数据库中所有集合名称
print(users.count()) # 统计users集合的文档数

2、通过URI连接

URI的格式:mongodb://username:password@ip:port

import pymongo
uri = "mongodb://root:root@localhost:3717"
client = pymongo.MongoClient(uri)
# 连接数据库
db = client.testDatabase 
# 连接到users集合
users= db.users

print(db.list_collection_names()) # 获取数据库中所有集合名称
print(users.count()) # 统计users集合的文档数

python操作MongoDB

本文详细的介绍了在python里如何操作MongoDB数据库

在python里操作MongoDB其实很简单主要分三部分

1.连接MongoDB数据库

2.指定数据库

3.指定集合

接下来我们就详细的看一看数据库的连接及插入操作吧:

数据库连接.py

import pymongo

#连接 MongoDB
client=pymongo.MongoClient(host=localhost,port=27017)

#第二种连接方式
#client=pymongo.MongoClient(‘mongodb://localhost:27017/‘)

#指定数据库
db=client.test
#第二种指定方式
#db=client[‘test‘]

#指定集合
collection=db.students

#collection=db[‘students‘]


#插入数据
student={
    id:201812121,
    name:ltf,
    age:21,
    gender:male
}
result=collection.insert(student)
print(result)

student1={
    id:201812122,
    name:lsq,
    age:21,
    gender:female
}
student2={
    id:201812123,
    name:lhw,
    age:20,
    gender:male
}
result1=collection.insert([student1,student2])
print(result1)


student3={
    id:201812124,
    name:bz,
    age:21,
    gender:female
}
student4={
    id:201812125,
    name:zn,
    age:20,
    gender:male
}
result2=collection.insert_many([student3,student4])
print(result2)
print(result2.inserted_ids)


#查询数据
result3=collection.find_one({name:ltf})
print(type(result3))
print(result3)

 

接下来就是数据库查询操作,主要有find_one和find方法,

import pymongo

#连接 MongoDB
client=pymongo.MongoClient(host=localhost,port=27017)
#指定数据库
db=client.test
#指定集合
collection=db.students

#查询数据
result=collection.find_one({name:ltf})
print(type(result))
print(result)

#查询多条数据
results=collection.find({age:20})
print(results)
for result in results:
    print(result)

print(====*20)
#查询年龄大于20
resultss=collection.find({age:{$gt:20}})
for result1 in resultss:
    print(result1)

print(====*20)
#正则匹配查询
results=collection.find({name:{$regex:^ltf.*}})
for result in results:
    print(result)
#属性是否存在
results=collection.find({name:{$exists:True}})
for result in results:
    print(result)

#文本查询
results=collection.find({$text:{$search:ltf}})
print(results)

除此之外还有其他各种各样的方法:

import pymongo

#连接 MongoDB
client=pymongo.MongoClient(host=localhost,port=27017)
#指定数据库
db=client.test
#指定集合
collection=db.students

#计数
count=collection.find().count()
print(count)   #统计所有数量

count=collection.find({age:20}).count()
print(count)   #统计年龄为20的数量

#排序
results=collection.find().sort(name,pymongo.ASCENDING)
print([result[name]for result in results])  #升序

results=collection.find().sort(name,pymongo.DESCENDING)
print([result[name]for result in results])  #降序

#偏移
results=collection.find().sort(name,pymongo.ASCENDING).skip(2)
print([result[name]for result in results])  #升序偏移2 即从第三个数据开始输出

results=collection.find().sort(name,pymongo.ASCENDING).skip(2).limit(8)
print([result[name]for result in results])  #升序偏移2 即从第三个数据开始输出 limit限制8个

#更新
condition={name:ltf}
student=collection.find_one(condition)
student[age]=25
result=collection.update(condition,student)
print(result)

‘‘‘
#删除
result=collection.remove({‘name‘:‘bz‘})
print(result)  #成功一个

result=collection.delete_one({‘name‘:‘zn‘})
print(result)
print(result.deleted_count) #删除bn

result=collection.delete_many({‘age‘:{‘$gt‘:‘20‘}})
print(result.deleted_count) #删除bn
‘‘‘

 

以上就是pymongo的各种各样的方法的一些简单用法了

以上是关于Python操作MongoDB数据库的主要内容,如果未能解决你的问题,请参考以下文章

Python删除mongodb数据库和用户,查看Python操作mongodb的方法

Python操作Mongodb

python中操作MongoDB

python中操作MongoDB

python 操作MongoDB

Python 数据库骚操作 — MongoDB