mongo_demo.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. from pymongo import MongoClient
  2. db = MongoClient('127.0.0.1',27017)
  3. my_db = db.my_db
  4. my_infor = my_db.my_infor
  5. # 向文件中插入数据
  6. user = [{'name':'jiesen','age':15,'sex':'男'},{'name':'jiesen','age':35,'sex':'男'},{'name':'jiesen','age':23,'sex':'男'}]
  7. # my_infor.insert(user)
  8. '''
  9. insert():可以实现单条或多条数据的插入
  10. save():只能完成单条数据的插入,并且数据必须是字典结构
  11. '''
  12. # 查询数据
  13. res = my_infor.find({'name':'jiesen'})
  14. # for item in res:
  15. # print(item)
  16. # 更新数据
  17. # multi: 布尔类型, 设置数据更新时是否一次性更新多条数据, 默认为False
  18. # upsert: 设置数据更新时,如果数据不存在,是否将本次数据添加到文件中,默认为False
  19. # my_infor.update({'name':'jiesen1'},{'$set':{'age':20,'sex':'woman'}},multi=True,upsert=True)
  20. # 删除数据
  21. # delete_one(): 删除数据中一条数据
  22. # delete_many(): 一次性删除多条满足的数据
  23. # my_infor.delete_many({'name':'jiesen'})
  24. # mongodb条件查询:
  25. '''
  26. > : $gt
  27. < : $lt
  28. >= : $gte
  29. <= : $lte
  30. $in:(m,n,) : 提取在指定内容中的数据
  31. $all[n,m,...]: 查找数据库中某一条数据是否全部包含all中的数据, 如果'全部'包含则返回该条数据,否则不反悔
  32. $push: 向已有数据源中按照字段进行数据的添加.基于'列表'
  33. $pop: 将数据库中对应数据的某一个字段数据按照指定方式进行删除. 其中 -1:从列表的起始位置开始删除; 1: 从列表的最后位置开始删除
  34. $pull: 将对应数据中指定的数据分布进行删除(按值删除)
  35. $or : 或者指令, 该指令通常作为字典的键, 其对应的值是一个'列表'结构,列表中每一个元素之间是'并列'的关系.
  36. "在字典中所有的键值对之间代表的是一种'并且'的关系."
  37. .sort('age',1): 将查找之后的结果按照指定的字段进行排序, 1为升序,-1为降序
  38. .skip(m).limit(n): 将查找结果的取值显示为,跳过m条数据,显示n条数据. 即只显示m+1~m+1+n的数据
  39. '''
  40. #例:
  41. #查询年龄在[5,25]之间的所有数据
  42. res = my_infor.find({
  43. 'age':{'$gte':5,"$lte":25}
  44. })
  45. # for item in res:
  46. # print(item)
  47. #查询年龄15以下或25以上,name是jiesen的数据
  48. res1 = my_infor.find({
  49. '$or':[
  50. {'age':{'$gte':25}},
  51. {'age':{'$lte':15}}
  52. ],
  53. 'name':'jiesen'
  54. })
  55. # $in: 提取在指定内容中的数据
  56. res3 = my_infor.find({
  57. 'age':{'$in':(15,23)}
  58. })
  59. obj = {
  60. 'name':'ysh',
  61. 'sex':'男',
  62. 'age':77,
  63. 'photo':['img/1.jpg','img/2.jpg'],
  64. 'score':[12,15,17,90]
  65. }
  66. # my_infor.insert(obj)
  67. res4 = my_infor.find({
  68. 'score':{'$all':[12,15,90]}
  69. })
  70. # $push: 向已有数据源中按照字段进行数据的添加.基于'列表'
  71. # my_infor.update(
  72. # {'name':'ysh'}, #指定数据的条件
  73. # {'$push':{'score':[103,120]}}
  74. # )
  75. # $pop: 将数据库中对应数据的某一个字段数据按照指定方式进行删除. 其中 -1:从列表的起始位置开始删除; 1: 从列表的最后位置开始删除
  76. # $pull: 将对应数据中指定的数据分布进行删除(按值删除)
  77. my_infor.update(
  78. {'name':'ysh'},
  79. # {'$pop':{'score':1}},
  80. {'$pull':{'score':90}}
  81. )
  82. #多路查询
  83. res5 = my_infor.find({
  84. 'score.0':{'$gt':10}
  85. })
  86. obj1 = {
  87. 'name':'YSH',
  88. 'son':[
  89. {'name':'ete','age':17},
  90. {'name':"ete1",'age':15}
  91. ]
  92. }
  93. # my_infor.insert(obj1)
  94. res6 = my_infor.find({
  95. 'son.1.age':15
  96. })
  97. for item in res6:
  98. print(item)