Python操作MongoDB代码示例

1 1 import pymongo #pip install pymongo安装python操作mongodb的模块 2 2 myclient=pymongo.MongoClient(host='127.0.0.1',port=27017) #指定主机和端口号创建客户端 3 3 4 4 dblist=myclient.list_database_names() #查看MongoDB中存在的数据库 5 5 print(dblist) 6 6 7 7 mydb=myclient['dbtest']#数据库使用:有则直接使用,没有的话数据库只有在内容插入后才会自动创建! 8 8 print(mydb) 9 9 10 10 collist = mydb. list_collection_names()#查看当前数据库中的表 11 11 print(collist) 12 12 13 13 14 14 mycol=mydb['t1']#表(集合)使用:有则直接使用,没有的话集合只有在内容插入后才会创建! 15 15 print(mycol) 16 16 17 17 #MongoDB中数据表的操作: 18 18 19 19 # 1.添加数据 20 20 ''' 21 21 添加数据: 22 22 (1)insert()----单条和多条插入:MongoDB3.2版本自之前 23 23 db.collection.insert({}) 24 24 db.collection.insert([{},{}...]) 25 2523.2之后官方推荐: 26 26 insert_one()----单条插入 27 27 db.collection.insert_one({}) 28 28 insert_many()----多条插入 29 29 db.collection.insert_many([{},{}...]) 30 30 ''' 31 31 # 32 32 # res1=mycol.insert([{'name':'a','age':20,'gender':1}]) 33 33 # print(res1) 34 34 # res2=mycol.insert([{'name':'b','age':21,'gender':0},{'name':'c'}]) 35 35 # print(res2) 36 36 37 37 38 38 mydict = { "name": "Google", "alexa": "1", "url": "https://www.google.com" } 39 39 mylist = [ 40 40 { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" }, 41 41 { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" }, 42 42 { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" }, 43 43 { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" }, 44 44 { "name": "Github", "alexa": "109", "url": "https://www.github.com" } 45 45 ] 46 46 # res3=mycol.insert_one(mydict) 47 47 # print(res3) 48 48 # res4=mycol.insert_many(mylist) 49 49 # print(res4) 50 50 51 51 52 52 #2.查询数据 53 53 ''' 54 54 查询数据: 55 55 (1)find()----查询符合条件的所有数据 56 56 db.collection.find(查询条件) 57 57 (2)find_one()----查询符合条件的第一条数据 58 58 db.collection.find_one(查询条件) 59 59 ''' 60 60 61 61 62 62 all=mycol.find() 63 63 # all=mycol.find({'age':21}) 64 64 print(all) 65 65 for doc in all: 66 66 print(doc) 67 67 68 68 # one=mycol.find_one() 69 69 # one=mycol.find_one({'age':21}) 70 70 # print(one) 71 71 72 72 73 73 #3.修改数据(不存在即创建) 74 74 ''' 75 75 (1)update()---只能修改查询出的第一条数据 76 76 db.coolection.update({查询条件},{$修改器:{修改值}}) 77 77 修改器:认定当前修改的类型 $set设置类型修改器 强制修改某字段的值 78 78 (2)3.2之后官方推荐: 79 79 update_one()----修改查询结果的第一条数据 80 80 db.colleciton.update_one({查询条件},{$修改器:{修改值}}) 81 81 update_many()----修改查询结果所有数据 82 82 db.colleciton.update_many({查询条件},{$修改器:{修改值}}) 83 83 ''' 84 84 # res5=mycol.update({'name':'c'},{'$set':{'age':23}}) 85 85 # print(res5) 86 86 87 87 # res6=mycol.update_one({'name':'d'},{'$set':{'age':30,'gender':1}}) 88 88 # print(res6) 89 89 # res7=mycol.update_many({'name':'d'},{'$set':{'age':22}}) 90 90 # print(res7) 91 91 92 92 93 93 #4.删除数据 94 94 ''' 95 95 (1)remove()----不在推荐使用 96 96 db.collection.remove(查询条件)----删除符合查询结果的所有数据 97 97 (2)3.2之后官方推荐: 98 98 delete_one()----删除查询结果的第一条数据 99 99 db.colleciton.delete_one(查询条件) 100100 delete_many()----删除查询结果的所有数据 101101 db.colleciton.delete_many(查询条件) 102102 ''' 103103 # res8=mycol.remove({'age':22}) 104104 # print(res8) 105105 106106 # res9=mycol.delete_one({'name':'c'}) 107107 # print(res9) 108108 109109 # res10=mycol.delete_many({'name':'a'}) 110110 # print(res10) 111111 112112 113113 #5.数据排序+跳跃+范围 114114 ''' 115115 对查询结果进行排序、跳跃取值、范围截取 116116 117117 (1)sort(filed,pymongo.ASCENDING/pymongo.DESCENDING)----对查询结果升序/降序排序 118118 db.collection.find({}).sort() 119119 (2)skip(num)----对查询结果进行跳跃取值 120120 db.collection.find({}).skip() 121121 (3)limit(num)----对查询结果进行范围截取 122122 db.collection.find({}).limit() 1231234)优先级:sort>skip>limit,与使用时的顺序无关 124124 db.collection.find({}).sort().skip().limit() 125125 db.collection.find({}).limit().sort().skip() 126126 db.collection.find({}).skip().sort().limit() 127127 ''' 128128 print('----------------------------') 129129 alldata1=mycol.find({}).sort('age',pymongo.ASCENDING)#升序 130130 for i in alldata1: 131131 print(i) 132132 print('----------------------------') 133133 alldata2=mycol.find({}).skip(8) 134134 for i in alldata2: 135135 print(i) 136136 print('----------------------------') 137137 alldata3=mycol.find({}).limit(2) 138138 for i in alldata3: 139139 print(i) 140140 141141 #6.查询关键字 142142 ''' 1431431)$and----并列查询 144144 db.collection.find({'$and':[{},{}...]}) 1451452)$or----或条件查询 146146 db.collection.find({'$or':[{},{}...]}) 1471473)$in----范围查询 148148 db.collection.find({field:{'$in':['',''...]}}) 1491494)$all----子集查询 150150 db.collection.find({field:{'$all':['',''...]}}) 151151 ''' 152152 153153 print('+++++++++++++++++++++++++++++++') 154154 res11=mycol.find({"name":'c'}) 155155 for i in res11: 156156 print(i) 157157 158158 print('+++++++++++++++++++++++++++++++') 159159 res12=mycol.find({'$and':[{'name':'c'},{'age':20}]}) 160160 for i in res12: 161161 print(i) 162162 163163 print('+++++++++++++++++++++++++++++++') 164164 res13=mycol.find({'$or':[{'name':'c'},{'name':'b'}]}) 165165 for i in res13: 166166 print(i) 167167 168168 print('+++++++++++++++++++++++++++++++') 169169 res14=mycol.find({'name':{'$in':['c','b']}}) 170170 for i in res14: 171171 print(i) 172172 173173 174174 175175 print('+++++++++++++++++++++++++++++++') 176176 # res15=mycol.find({'hobby':{'$all':['run','eat','swim']}}) 177177 res15=mycol.find({'hobby':{'$all':['run','eat']}}) 178178 for i in res15: 179179 print(i) 180180 181181 #7.查询条件操作符(一般用于数字比较) 182182 ''' 1831831)$lt----小于 184184 db.collection.find({field:{'$lt':value}}) 1851852)$gt----大于 186186 db.collection.find({field:{'$gt':value}}) 1871873)$eq----等于 188188 db.collection.find({field:{'$eq':value}}) 1891894)$lte----小于等于 190190 db.collection.find({field:{'$lte':value}}) 1911915)$gte----大于等于 192192 db.collection.find({field:{'$gte':value}}) 1931936)$ne----不等于 194194 db.collection.find({field:{'$ne':value}}) 195195 ''' 196196 197197 # mycol.insert_many([{'name':'d','age':18},{'name':'e','age':22},{'name':'f','age':32},]) 198198 print("**************************************") 199199 res16=mycol.find({'age':{'$lt':21}}) 200200 for i in res16: 201201 print(i) 202202 203203 print("**************************************") 204204 res17=mycol.find({'age':{'$gt':21}}) 205205 for i in res17: 206206 print(i) 207207 208208 print("**************************************") 209209 res18=mycol.find({'age':{'$eq':21}}) 210210 for i in res18: 211211 print(i) 212212 print("**************************************") 213213 res19=mycol.find({'age':{'$lte':21}}) 214214 for i in res19: 215215 print(i) 216216 217217 print("**************************************") 218218 res20=mycol.find({'age':{'$gte':21}}) 219219 for i in res20: 220220 print(i) 221221 222222 223223 print("**************************************") 224224 res21=mycol.find({'age':{'$ne':21}}) 225225 for i in res21: 226226 print(i) 227227 228228 229229 #8.$修改器 + $ 字符特殊用法 230230 ''' 2312311)$set----修改某个字段的值 2322322)$unset---删除字段 2332333)$inc----引用增加(先引用 后增加) 2342344)针对数组操作: 235235 ①$push----Array的最后一个位置中增加一个数据 236236 ②$pushAll----Array的最后一个位置中增加多个数据 237237 ③$pull ----删除Array中的指定单个元素 238238 ④$pullAll ----删除Array中的指定多个元素 239239 ⑤$pop----删除Array中的第一个或者最后一个元素 正数是倒序删除 负数是正序删除 240240 ⑥$----存储当前(Array)符合条件的元素下标索引 ,只能存储最外层的 索引位置 241241 ''' 242242 # mycol.update_one({'name':'c','age':20},{'$set':{'hobby':['swim,dump','sing']}}) 243243 # mycol.update_one({'$and':[{'name':'c'},{'age':20}]},{"$unset":{'hobby':[1,2]}}) 244244 # mycol.update_many({'name':{'$in':['d','e','f']}},{'$inc':{'age':2}}) 245245 # mycol.update_one({'name':'b'},{'$push':{'hobby':['swim','sing']}}) 246246 247247 # mycol.update({'name':'c'},{'$pushAll':{'hobby':['sing','scrapy']}})#实际测试无法使用,报错:Unknown modifier: $pushAll 248248 # mycol.update_many({'name':'b'},{'$pullAll':{'hobby':['swim','play']}})#实际测试每次只删除一个元素 249249 250250 # mycol.update_one({'hobby':'run'},{'$pull':{'hobby':'eat'}}) 251251 # mycol.update_many({'hobby':'run'},{'$pop':{'hobby':1}}) 252252 # mycol.update_many({'hobby':'run'},{'$pop':{'hobby':-1}}) 253253 254254 # mycol.update_many({'name':'c','age':{'$ne':20}},{'$set':{'hobby':['swim','sing']}}) 255255 # mycol.update_many({'hobby':'run'},{'$push':{'hobby':'swim'}})
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )