zoukankan      html  css  js  c++  java
  • Python操作MongoDB代码示例

      1 import pymongo  #pip install pymongo安装python操作mongodb的模块
      2 myclient=pymongo.MongoClient(host='127.0.0.1',port=27017)   #指定主机和端口号创建客户端
      3 
      4 dblist=myclient.list_database_names() #查看MongoDB中存在的数据库
      5 print(dblist)
      6 
      7 mydb=myclient['dbtest']#数据库使用:有则直接使用,没有的话数据库只有在内容插入后才会自动创建!
      8 print(mydb)
      9 
     10 collist = mydb. list_collection_names()#查看当前数据库中的表
     11 print(collist)
     12 
     13 
     14 mycol=mydb['t1']#表(集合)使用:有则直接使用,没有的话集合只有在内容插入后才会创建!
     15 print(mycol)
     16 
     17 #MongoDB中数据表的操作:
     18 
     19 # 1.添加数据
     20 '''
     21 添加数据:
     22 (1)insert()----单条和多条插入:MongoDB3.2版本自之前
     23     db.collection.insert({})
     24     db.collection.insert([{},{}...])
     25 (2)3.2之后官方推荐:   
     26     insert_one()----单条插入
     27         db.collection.insert_one({})
     28     insert_many()----多条插入
     29         db.collection.insert_many([{},{}...])
     30 '''
     31 #
     32 # res1=mycol.insert([{'name':'a','age':20,'gender':1}])
     33 # print(res1)
     34 # res2=mycol.insert([{'name':'b','age':21,'gender':0},{'name':'c'}])
     35 # print(res2)
     36 
     37 
     38 mydict = { "name": "Google", "alexa": "1", "url": "https://www.google.com" }
     39 mylist = [
     40   { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" },
     41   { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" },
     42   { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" },
     43   { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" },
     44   { "name": "Github", "alexa": "109", "url": "https://www.github.com" }
     45 ]
     46 # res3=mycol.insert_one(mydict)
     47 # print(res3)
     48 # res4=mycol.insert_many(mylist)
     49 # print(res4)
     50 
     51 
     52 #2.查询数据
     53 '''
     54 查询数据:
     55 (1)find()----查询符合条件的所有数据
     56     db.collection.find(查询条件)
     57 (2)find_one()----查询符合条件的第一条数据
     58     db.collection.find_one(查询条件)
     59 '''
     60 
     61 
     62 all=mycol.find()
     63 # all=mycol.find({'age':21})
     64 print(all)
     65 for doc in all:
     66     print(doc)
     67 
     68 # one=mycol.find_one()
     69 # one=mycol.find_one({'age':21})
     70 # print(one)
     71 
     72 
     73 #3.修改数据(不存在即创建)
     74 '''
     75 (1)update()---只能修改查询出的第一条数据
     76     db.coolection.update({查询条件},{$修改器:{修改值}})
     77     修改器:认定当前修改的类型 $set设置类型修改器 强制修改某字段的值
     78 (2)3.2之后官方推荐:
     79     update_one()----修改查询结果的第一条数据
     80         db.colleciton.update_one({查询条件},{$修改器:{修改值}})
     81     update_many()----修改查询结果所有数据
     82         db.colleciton.update_many({查询条件},{$修改器:{修改值}})
     83 '''
     84 # res5=mycol.update({'name':'c'},{'$set':{'age':23}})
     85 # print(res5)
     86 
     87 # res6=mycol.update_one({'name':'d'},{'$set':{'age':30,'gender':1}})
     88 # print(res6)
     89 # res7=mycol.update_many({'name':'d'},{'$set':{'age':22}})
     90 # print(res7)
     91 
     92 
     93 #4.删除数据
     94 '''
     95 (1)remove()----不在推荐使用
     96     db.collection.remove(查询条件)----删除符合查询结果的所有数据
     97 (2)3.2之后官方推荐:
     98     delete_one()----删除查询结果的第一条数据
     99         db.colleciton.delete_one(查询条件)
    100     delete_many()----删除查询结果的所有数据
    101         db.colleciton.delete_many(查询条件)
    102 '''
    103 # res8=mycol.remove({'age':22})
    104 # print(res8)
    105 
    106 # res9=mycol.delete_one({'name':'c'})
    107 # print(res9)
    108 
    109 # res10=mycol.delete_many({'name':'a'})
    110 # print(res10)
    111 
    112 
    113 #5.数据排序+跳跃+范围
    114 '''
    115 对查询结果进行排序、跳跃取值、范围截取
    116 
    117 (1)sort(filed,pymongo.ASCENDING/pymongo.DESCENDING)----对查询结果升序/降序排序
    118         db.collection.find({}).sort()
    119 (2)skip(num)----对查询结果进行跳跃取值
    120         db.collection.find({}).skip()
    121 (3)limit(num)----对查询结果进行范围截取
    122         db.collection.find({}).limit()
    123 (4)优先级:sort>skip>limit,与使用时的顺序无关
    124         db.collection.find({}).sort().skip().limit()
    125         db.collection.find({}).limit().sort().skip()
    126         db.collection.find({}).skip().sort().limit()
    127 '''
    128 print('----------------------------')
    129 alldata1=mycol.find({}).sort('age',pymongo.ASCENDING)#升序
    130 for i in alldata1:
    131     print(i)
    132 print('----------------------------')
    133 alldata2=mycol.find({}).skip(8)
    134 for i in alldata2:
    135     print(i)
    136 print('----------------------------')
    137 alldata3=mycol.find({}).limit(2)
    138 for i in alldata3:
    139     print(i)
    140 
    141 #6.查询关键字
    142 '''
    143 (1)$and----并列查询
    144         db.collection.find({'$and':[{},{}...]})
    145 (2)$or----或条件查询
    146         db.collection.find({'$or':[{},{}...]})
    147 (3)$in----范围查询
    148         db.collection.find({field:{'$in':['',''...]}})
    149 (4)$all----子集查询
    150          db.collection.find({field:{'$all':['',''...]}})
    151 '''
    152 
    153 print('+++++++++++++++++++++++++++++++')
    154 res11=mycol.find({"name":'c'})
    155 for i in res11:
    156     print(i)
    157 
    158 print('+++++++++++++++++++++++++++++++')
    159 res12=mycol.find({'$and':[{'name':'c'},{'age':20}]})
    160 for i in res12:
    161     print(i)
    162 
    163 print('+++++++++++++++++++++++++++++++')
    164 res13=mycol.find({'$or':[{'name':'c'},{'name':'b'}]})
    165 for i in res13:
    166     print(i)
    167 
    168 print('+++++++++++++++++++++++++++++++')
    169 res14=mycol.find({'name':{'$in':['c','b']}})
    170 for i in res14:
    171     print(i)
    172 
    173 
    174 
    175 print('+++++++++++++++++++++++++++++++')
    176 # res15=mycol.find({'hobby':{'$all':['run','eat','swim']}})
    177 res15=mycol.find({'hobby':{'$all':['run','eat']}})
    178 for i in res15:
    179     print(i)
    180 
    181 #7.查询条件操作符(一般用于数字比较)
    182 '''
    183 (1)$lt----小于
    184     db.collection.find({field:{'$lt':value}})
    185 (2)$gt----大于
    186     db.collection.find({field:{'$gt':value}})
    187 (3)$eq----等于
    188     db.collection.find({field:{'$eq':value}})
    189 (4)$lte----小于等于
    190     db.collection.find({field:{'$lte':value}})
    191 (5)$gte----大于等于
    192     db.collection.find({field:{'$gte':value}})
    193 (6)$ne----不等于
    194     db.collection.find({field:{'$ne':value}})
    195 '''
    196 
    197 # mycol.insert_many([{'name':'d','age':18},{'name':'e','age':22},{'name':'f','age':32},])
    198 print("**************************************")
    199 res16=mycol.find({'age':{'$lt':21}})
    200 for i in res16:
    201     print(i)
    202 
    203 print("**************************************")
    204 res17=mycol.find({'age':{'$gt':21}})
    205 for i in res17:
    206     print(i)
    207 
    208 print("**************************************")
    209 res18=mycol.find({'age':{'$eq':21}})
    210 for i in res18:
    211     print(i)
    212 print("**************************************")
    213 res19=mycol.find({'age':{'$lte':21}})
    214 for i in res19:
    215     print(i)
    216 
    217 print("**************************************")
    218 res20=mycol.find({'age':{'$gte':21}})
    219 for i in res20:
    220     print(i)
    221 
    222 
    223 print("**************************************")
    224 res21=mycol.find({'age':{'$ne':21}})
    225 for i in res21:
    226     print(i)
    227 
    228 
    229 #8.$修改器 + $ 字符特殊用法
    230 '''
    231 (1)$set----修改某个字段的值
    232 (2)$unset---删除字段
    233 (3)$inc----引用增加(先引用 后增加)
    234 (4)针对数组操作:
    235     ①$push----在Array的最后一个位置中增加一个数据
    236     ②$pushAll----在Array的最后一个位置中增加多个数据
    237     ③$pull ----删除Array中的指定单个元素
    238     ④$pullAll ----删除Array中的指定多个元素
    239     ⑤$pop----删除Array中的第一个或者最后一个元素 正数是倒序删除 负数是正序删除
    240     ⑥$----存储当前(Array)符合条件的元素下标索引 ,只能存储最外层的 索引位置 
    241 '''
    242 # mycol.update_one({'name':'c','age':20},{'$set':{'hobby':['swim,dump','sing']}})
    243 # mycol.update_one({'$and':[{'name':'c'},{'age':20}]},{"$unset":{'hobby':[1,2]}})
    244 # mycol.update_many({'name':{'$in':['d','e','f']}},{'$inc':{'age':2}})
    245 # mycol.update_one({'name':'b'},{'$push':{'hobby':['swim','sing']}})
    246 
    247 # mycol.update({'name':'c'},{'$pushAll':{'hobby':['sing','scrapy']}})#实际测试无法使用,报错:Unknown modifier: $pushAll
    248 # mycol.update_many({'name':'b'},{'$pullAll':{'hobby':['swim','play']}})#实际测试每次只删除一个元素
    249 
    250 # mycol.update_one({'hobby':'run'},{'$pull':{'hobby':'eat'}})
    251 # mycol.update_many({'hobby':'run'},{'$pop':{'hobby':1}})
    252 # mycol.update_many({'hobby':'run'},{'$pop':{'hobby':-1}})
    253 
    254 # mycol.update_many({'name':'c','age':{'$ne':20}},{'$set':{'hobby':['swim','sing']}})
    255 # mycol.update_many({'hobby':'run'},{'$push':{'hobby':'swim'}})
  • 相关阅读:
    for循环的执行循序
    final和finally面试时最好的回答
    关于java类加载器的一些概念
    JVM内存分析
    建造者模式
    外观模式
    常用的设计模式
    Java基础知识:Java实现Map集合二级联动3
    Java基础知识:Java实现Map集合二级联动1
    MySQL数据库怎么截取字符串?
  • 原文地址:https://www.cnblogs.com/open-yang/p/11205509.html
Copyright © 2011-2022 走看看