open-yang
  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\'}})

 

分类:

技术点:

相关文章: