开发者

Python操作MongoDB增删改查代码示例

开发者 https://www.devze.com 2022-12-22 08:59 出处:网络 作者: 笑得好美
python安装操作MongoDB的模块pymongo pip install pymongo python连接mongodb myclient=pymongo.MongoClient(host=\'127.0.0.1\',port=27017)#指定主机和端口号创建客户端

python安装操作MongoDB的模块pymongo

pip install pymongo

python连接mongodb

myclient=pymongo.MongoClient(host='127.0.0.1',port=27017)   #指定主机和端口号创建客户端

查看MongoDB中存在的数据库

dblist=myclient.list_database_names() 
print(dblist)

数据库使用:有则直接使用,没有的话数据库只有在内容插入后才会自动创建!

mydb=myclient['dbtest']
print(mydb)

查看当前数据库中的表

collist = mydb. list_collection_names()
print(collist)

使用表(集合)

mycol=mydb['t1']#有则直接使用,没有的话集合只有在内容插入后才会创建!
print(mycol)

MongoDB中数据表的操作

1.Python添加MongoDB数据

(1)insert()----单条和多条插入:MongoDB3.2版本自之前

    db.collection.insert({})

    db.collection.insert([{},{}...])

(2)3.2之后官方推荐:

    insert_one()----单条插入

        db.collection.insert_one({})

    insert_many()----多条插入

        db.collection.insert_many([{},{}...])

res1=mycol.insert([{'name':'a','age':20,'gender':1}])
print(res1)
res2=mycol.insert([{'name':'b','age':21,'gender':0},{'name':'c'}])
print(res2)
​​​​​​​mydict = { "name": "Google", "alexa": "1", "url": "https://www.google.com" }
mylist = [
  { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" },
  { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" },
  { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" },
  { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" },
  { "name": "github", "alexa": "109", "url": "https://www.github.com" }
]
res3=mycol.insert_one(mydict)
print(res3)
res4=myc开发者_mssql2008ol.insert_many(mylist)
print(res4)

2.Python查询MongoDB数据

(1)find()----查询符合条件的所有数据

    db.collection.find(查询条件)

(2)find_one()----查询符合条件的第一条数据

    db.collection.find_one(查询条件)

all=mycol.find()
# all=mycol.find({'age':21})
print(all)
for doc in all:
    print(doc)
# one=mycol.find_one()
one=mycol.find_one({'age':21})
print(one)

3.Python修改MongoDB数据(不存在即创建)

(1)update()---只能修改查询出的第一条数据

    db.coolection.update({查询条件},{$修改器:{修改值}})

    修改器:认定当前修改的类型 $set设置类型修改器 强制修改某字段的值

(2)3.2之后官方推荐:

    update_one()----修改查询结果的第一条数据

        db.colleciton.update_one({查询条件},{$修改器:{修改值}})

    update_many()----修改查询结果所有数据

        db.colleciton.update_many({查询条件},{$修改器:{修改值}})

res5=mycol.update({'name':'c'},{'$set':{'age':23}})www.devze.com
print(res5)
res6=mycol.update_one({'name':'d'},{'$set':{'age':30,'gender':1}})
print(res6)
res7=mycol.update_many({'name':'d'},{'$set':{'age':22}})
print(res7)

4.Python删除MongoDB数据

(1)remove()----不在推荐使用

    db.collection.remove(查询条件)----删除符合查询结果的所有数据

(2)3.2之后官方推荐:

    delete_one()----删除查询结果的第一python条数据

        db.colleciton.delete_one(查询条件)

    delete_many()----删除查询结果的所有数据

        db.colleciton.delete_many(查询条件)

res8=mycol.remove({'age':22})
print(res8)
res9=mycol.delete_one({'name':'c'})
print(res9)
res10=mycol.delete_many({'name':'a'})
print(res10)

5.Python操作MongoDB数据排序+跳跃+范围

对查询结果进行排序、跳跃取值、范围截取

(1)sort(filed,pymongo.ASCENDING/pymongo.DESCENDING)----对查询结果升序/降序排序

        db.collection.find({}).sort()

(2)skip(num)----对查询结果进行跳跃取值

        db.collection.find({}).skip()

(3)limit(num)----对查询结果进行范围截取

        db.collection.find({}).limit()

(4)优先级:sort>skip>limit,与使用时的顺序无关

        db.collection.find({}).sort().skip().limit()

        db.collection.find({}).limit().sort().skip()

        db.collection.find({}).skip().sort().limit()

print('----------------------------')
alldata1=mycol.find({}).sort('age',pymongo.ASCENDING)#升序
for i in alldata1:
    print(i)
print('----------------------------')
alldata2=mycol.find({}).skip(8)
for i in alldata2:
    print(i)
print('----------------------------')
alldata3=mycol.find({}).limit(2)
for i in alldata3:
    print(i)

6.查询关键字

(1)$and----并列查询

        db.collection.find({'$and':[{},{}...]})

(2)$or----或条件查询

        db.collection.find({'$or':[{},{}...]})

(3)$in----范围查询

        db.collection.find({field:{'$in':['',''...]}})

(4)$all----子集查询

         db.collection.find({field:{'$all':['',''...]}})

print('+++++++++++++++++++++++++++++++')
res11=mycol.find({"name":'c'})
for i in res11:
    print(i)
print('+++++++++++++++++++++++++++++++')
res12=mycol.find({'$and':[{'name':'c'},{'age':20}]})
for i in res12:
    print(i)
print('+++++++++++++++++++++++++++++++')
res13=mycol.find({'$or':[{'name':'c'},{'name':'b'}]})
for i in res13:
    print(i)
print('+++++++++++++++++++++++++++++++')
res14=mycol.find({'name':{'$in':['c','b']}})
for i in res14:
    print(i)
print('+++++++++++++++++++++++++++++++')
res15=mycol.find({'hobby':{'$all':['run','eat','swim']}})
res15=mycol.find({'hobby':{'$all':['run','eat']}})
for i in res15:
    print(i)

7.查询条件操作符(一般用于数字比较)

(1)$lt----小于

    db.collection.find({field:{'$lt':value}})

(2)$gt----大于

    db.collection.find({field:{'$gt':value}})

(3)$eq----等于

    db.collection.find({field:{'$eq':value}})

(4)$lte----小于等于

    db.collection.find({field:{'$lte':value}})

(5)$gte----大于等于

    db.collection.find({field:{'$gte':value}})

(6)$ne----不等于

    db.collection.find({field:{'$ne':value}})

# mycol.insert_many([{'name':'d','age':18},{'name':'e','age':22},{'name':'f','age':32},])
print("**************************************")
res16=mycol.find({'age':{'$lt':21}})
for i in res16:
    print(i)
print("**************************************")
res17=mycol.find({'age':{'$gt':21}})
for i in res17:
    print(i)
print("**************************************")
res18=mycol.find({'age':{'$eq':21}})
for i in res18:
    print(i)
print("**************************************")
res19=mycol.find({'age':{'$lte':21}})
for i in res19:
    print(i)
print("**************************************")
res20=mycol.find({'age':{'$gte':21}})
for i in res20:
    print(i)
print("**************************************")
res21=mycol.find({'age':{'$ne':2javascript1}})
for i in res21:
    print(i)

8.$修改器 + $ 字符特殊用法

(1)$set----修改某个字段的值

(2)$unset---删除字段

(3)$inc----引用增加(先引用 后增加)

(4)针对数组操作:

    ①$push----在Arwww.devze.comray的最后一个位置中增加一个数据

    ②$pushAll----在Array的最后一个位置中增加多个数据

    ③$pull ----删除Array中的指定单个元素

    ④$pullAll ----删除Array中的指定多个元素

    ⑤$pop----删除Array中的第一个或者最后一个元素 正数是倒序删除 负数是正序删除

    ⑥$----存储当前(Array)符合条件的元素下标索引 ,只能存储最外层的 索引位置

# mycol.update_one({'name':'c','age':20},{'$set':{'hobby':['swim,dump','sing']}})
# mycol.update_one({'$and':[{'name':'c'},{'age':20}]},{"$unset":{'hobby':[1,2]}})
# mycol.update_many({'name':{'$in':['d','e','f']}},{'$inc':{'age':2}})
# mycol.update_one({'name':'b'},{'$push':{'hobby':['swim','sing']}})
# mycol.update({'name':'c'},{'$pushAll':{'hobby':['sing','scrapy']}})#实际测试无法使用,报错:Unknown modifier: $pushAll
# mycol.update_many({'name':'b'},{'$pullAll':{'hobby':['swim','play']}})#实际测试每次只删除一个元素
# mycol.update_one({'hobby':'run'},{'$p编程客栈ull':{'hobby':'eat'}})
# mycol.update_many({'hobby':'run'},{'$pop':{'hobby':1}})
# mycol.update_many({'hobby':'run'},{'$pop':{'hobby':-1}})
# mycol.update_many({'name':'c','age':{'$ne':20}},{'$set':{'hobby':['swim','sing']}})
# mycol.update_many({'hobby':'run'},{'$push':{'hobby':'swim'}})

本文主要讲解了Python操作MongoDB增删改查代码实例,更多关于Python操作MongoDB的知识请查看下面的相关链接

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号