12. python联用mongodb

12. python联用mongodb

标签(空格分隔): 4.2python(核心)


一 pymongo写入

导入模块
import pymongo
from pymongo import MongoClient

1. 连接本地数据库服务

connection = MongoClient(‘localhost’)

2. 获取数据库对象

db=connection.demo

3. 获取集合对象employees(没有则创建集合)

emp=db.employees

4. 根据需求 清空所有

emp.delete_many({})

5. 写入

(1) 插入一条

  • 语法: emp.insert_one(dict)

  • 示例1:

zhangsan= {
‘name’:‘张三’,
‘age’:30,
‘sex’:‘男’,
‘oontact’:{
‘email1’:‘abc@qq.com’,
‘email2’:‘def@163.com’
}
}

  • 执行插入语句

result1=emp.insert_one(zhangsan)
print(result1)
print(dir(result1))

  • 示例2:

zhangsanfeng= {
‘name’:‘张三丰’,
‘age’:500,
‘sex’:‘男’,
‘contact’:{
‘email1’:‘abc4839@qq.com’,
‘email2’:‘def@82082.com’
}
}
emp.insert_one(zhangsanfeng)

  • 查看方式:
    mongopy—双击—data
    image_1cv0ggcs916toqc59jb1o81hbd9.png-113.7kB

(2) 插入多条

  • 语法: emp.insert_many([dict1,dict2,…])

lisi={
‘name’: ‘李四’,
‘habit’:{
‘habit1’:‘eat’,
‘habit2’:‘play’
}
}
wangwu={‘name’:‘王五’,‘age’:20,‘sex’:‘男’}

  • 运行:

emp.insert_many([lisi,wangwu])


二 pymongo查询

1. 导入模块

import pymongo
from pymongo import MongoClient

2. 连接本地/获取数据库对象/获取集合对象

connection = MongoClient(‘localhost’)
db=connection.demo
emp=db.employees

3. 查询内容

3.1 无条件查询

cursor = emp.find({})
print(list(cursor)) 查询输出所有(一个列表)

cursor = emp.find({})
for each in cursor:
print(each) 查询输出每个(多个集合)

3.2 有条件查询

(1)单条件查询

  • 语法: emp.find({键1:值1})

cursor = emp.find({‘name’: ‘张三’})
for each in cursor:
print(each)
image_1cv0jmm871h1d1ppq1cqh1e6o1t4i4k.png-55.6kB

(2)包含条件查询

  • 语法: emp.find({ 键1:{’$in’:[值1,值2]} })

cursor = emp.find({
‘name’:{
‘$in’:[‘张三’,‘李四’]}
})
for each in cursor:
print(each)

image_1cv0jo01511g2dgr376vdm4he51.png-55.8kB

(3)多条件and查询

  • 语法: emp.find({ ‘键1’:{’$in’:[‘值1’,‘值2’]}, ‘键2’:值2 })

cursor = emp.find({‘name’: ‘张三’,‘sex’:‘男’})
cursor = emp.find({
‘name’:{’$in’:[‘张三’,‘李四’]},
‘age’:30
})
for each in cursor:
print(each)

(4)多条件or查询(注意转义符)

- 语法: emp.find({ ‘键1’:{’$in’: [ ‘值1’,‘值2’]}, {‘键2’:{’$gt’:int}} })

cursor = emp.find({
‘$or’:[
{‘name’:{’$in’:[‘张三’,‘李四’]}},
{‘age’:{’$gt’:25}}
]
})
for each in cursor:
print(each)

image_1cv0jkc177rh1a0scos1j28117v47.png-57.2kB

(5) 子查询

  • 语法: emp.find({‘contact.email1’:‘abc4839@qq.com’})

cursor=emp.find({
‘contact.email1’:‘abc4839@qq.com’
})
for each in cursor:
print(each)
image_1cv0i5t191aoa14u7nntrec3ua16.png-26.7kB


#三 pymongo更新数据

1. 导入模块

import pymongo
from pymongo import MongoClient

2. 连接本地/获取数据库对象/获取集合对象

connection = MongoClient(‘localhost’)
db=connection.demo
emp=db.employees

3. 更新信息

(1)更改单条

  • 语法:

emp.update_one(
{‘被更改对象键’:‘被更改对象值’},
{’$set’:
{
‘新键1’:‘新值1’,
‘新键2’:‘新值2’
}})

  • 示例: 将王五的名字更新为王舞,性别更新为女汉子

cursor = emp.update_one(
{‘name’:‘王五’},
{’$set’:
{
‘name’:‘王舞’,
‘sex’:‘女汉子’
}
}
)
image_1cv0iecjlbgt1tva1ld8i6h1s831j.png-17.8kB

(2)更新多条

  • 语法:

emp.update_many(
{‘被改对象键1’:{’$in’:[‘被改对象值1’,‘被改对象值2’]}},
{’$inc’:{
‘新键1’:新值1
}})

  • 示例: 过了十年大家都要涨10岁

result=emp.update_many({‘name’:{’$in’:[‘张三’,‘李四’]}},
{’$inc’:{
‘sge’:10
}
}
)
print(result.raw_result)

(3)更新不存在的数据

  • 语法:

    emp.update_one(
    {‘新键1’:‘新值1’},
    {’$set’:{‘新键2’:‘新值2’}},
    upsert=True)

  • 示例: 添加钱八,并加入绰号八爷

emp.update_one(
{‘name’:‘钱八’},
{’$set’:{‘nickname’:‘八爷’}},
upsert=True # 使没有的字段,更新增加进去
)

image_1cv0ji2fdkcs1oao1ui266716m93q.png-8kB

(4)更新时间进去–时间戳
emp.update_one(
{‘name’:‘小七’},
{’$currentDate’:{
‘create_time’:True, # True 相当于 {’$type’:‘date’}
‘mod_time’:{’$type’:‘timestamp’},
}},upsert=True
)
image_1cv0jh1i21i2sls218r919h1jg23d.png-10.8kB

(5)更新字段内的字段

  • 语法:

emp.update_one(
{‘被改对象键1’:‘被改对象值1’},
{’$set’:{
‘被改对象键2.字段内置键1’:‘内置值1’,
‘被改对象键2.字段内置键2’:‘内置值2’
}}
)

  • 示例: 将李四的两个爱好,改为运动和学习

emp.update_one(
{‘name’:‘李四’},
{’$set’:{
‘habit.habit1’:‘学习’,
‘habit.habit2’:‘运动’
}}
)
image_1cv0jfuf5pct1u69fm01enh149u30.png-12.4kB


#四 pymongo删除数据

from pymongo import MongoClient 导入模块
connect=MongoClient(‘localhost’) 连接本地
db=connect.demo 连接数据库
emp=db.employees 连接集合

(1)删除一条数据

语法: emp.delete_one()

result = emp.delete_one({
‘name’:‘张三丰’
})
print(result.raw_result)

image_1cv22hv47169uk9m1kqtlidn9r1o.png-11.3kB

(2)删除多条

语法: emp.delete_many()

result = emp.delete_many({
‘age’:{’$gt’:25}
})
print(result.raw_result)

image_1cv22j4krab73se13j8197m14qe25.png-17.7kB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值