flask中配置并使用mongodb
<p>在你安装并运行了mongodb的情况下:<br>随便在一个文件中写入以下代码:<br>
import pymongo<br>
client = pymongo.MongoClient(host="localhost", port=27017)<br>
client.库名.表名.find()或其他方法<br>
注:习惯叫表名了,在mongodb中叫文档或collections<br>
如果你设置了用户名和密码则配置与上面有一条不同:<br>
client = pymongo.MongoClient("mongodb://user:passwd@host:port/database")</p>
<p>一个讲的更多细节的地址</p>
<div id="topics" style="font-size: 20px">
<div class="post">
<h1 class="postTitle">
<p>pymongo使用方法</p>
<pre><code> </h1>
<div class="clear"></div>
<div class="postBody">
</code></pre>
<div class="blogpost-body " id="cnblogs_post_body">
<div class="cnblogs_Highlighter sh-gutter">
<div><div class="syntaxhighlighterpython" id="highlighter_886407"><div class="toolbar"><span>?</span></div><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div><div class="line number4 index3 alt1">4</div><div class="line number5 index4 alt2">5</div><div class="line number6 index5 alt1">6</div><div class="line number7 index6 alt2">7</div><div class="line number8 index7 alt1">8</div><div class="line number9 index8 alt2">9</div><div class="line number10 index9 alt1">10</div><div class="line number11 index10 alt2">11</div><div class="line number12 index11 alt1">12</div><div class="line number13 index12 alt2">13</div><div class="line number14 index13 alt1">14</div><div class="line number15 index14 alt2">15</div><div class="line number16 index15 alt1">16</div><div class="line number17 index16 alt2">17</div><div class="line number18 index17 alt1">18</div><div class="line number19 index18 alt2">19</div><div class="line number20 index19 alt1">20</div><div class="line number21 index20 alt2">21</div><div class="line number22 index21 alt1">22</div><div class="line number23 index22 alt2">23</div><div class="line number24 index23 alt1">24</div><div class="line number25 index24 alt2">25</div><div class="line number26 index25 alt1">26</div><div class="line number27 index26 alt2">27</div><div class="line number28 index27 alt1">28</div><div class="line number29 index28 alt2">29</div><div class="line number30 index29 alt1">30</div><div class="line number31 index30 alt2">31</div><div class="line number32 index31 alt1">32</div><div class="line number33 index32 alt2">33</div><div class="line number34 index33 alt1">34</div><div class="line number35 index34 alt2">35</div><div class="line number36 index35 alt1">36</div><div class="line number37 index36 alt2">37</div><div class="line number38 index37 alt1">38</div><div class="line number39 index38 alt2">39</div><div class="line number40 index39 alt1">40</div><div class="line number41 index40 alt2">41</div><div class="line number42 index41 alt1">42</div><div class="line number43 index42 alt2">43</div><div class="line number44 index43 alt1">44</div><div class="line number45 index44 alt2">45</div><div class="line number46 index45 alt1">46</div><div class="line number47 index46 alt2">47</div><div class="line number48 index47 alt1">48</div><div class="line number49 index48 alt2">49</div><div class="line number50 index49 alt1">50</div><div class="line number51 index50 alt2">51</div><div class="line number52 index51 alt1">52</div><div class="line number53 index52 alt2">53</div><div class="line number54 index53 alt1">54</div><div class="line number55 index54 alt2">55</div><div class="line number56 index55 alt1">56</div><div class="line number57 index56 alt2">57</div><div class="line number58 index57 alt1">58</div><div class="line number59 index58 alt2">59</div><div class="line number60 index59 alt1">60</div><div class="line number61 index60 alt2">61</div><div class="line number62 index61 alt1">62</div><div class="line number63 index62 alt2">63</div><div class="line number64 index63 alt1">64</div><div class="line number65 index64 alt2">65</div><div class="line number66 index65 alt1">66</div><div class="line number67 index66 alt2">67</div><div class="line number68 index67 alt1">68</div><div class="line number69 index68 alt2">69</div><div class="line number70 index69 alt1">70</div><div class="line number71 index70 alt2">71</div><div class="line number72 index71 alt1">72</div><div class="line number73 index72 alt2">73</div><div class="line number74 index73 alt1">74</div><div class="line number75 index74 alt2">75</div><div class="line number76 index75 alt1">76</div><div class="line number77 index76 alt2">77</div><div class="line number78 index77 alt1">78</div><div class="line number79 index78 alt2">79</div><div class="line number80 index79 alt1">80</div><div class="line number81 index80 alt2">81</div><div class="line number82 index81 alt1">82</div><div class="line number83 index82 alt2">83</div><div class="line number84 index83 alt1">84</div><div class="line number85 index84 alt2">85</div><div class="line number86 index85 alt1">86</div><div class="line number87 index86 alt2">87</div><div class="line number88 index87 alt1">88</div><div class="line number89 index88 alt2">89</div><div class="line number90 index89 alt1">90</div><div class="line number91 index90 alt2">91</div><div class="line number92 index91 alt1">92</div><div class="line number93 index92 alt2">93</div><div class="line number94 index93 alt1">94</div><div class="line number95 index94 alt2">95</div><div class="line number96 index95 alt1">96</div><div class="line number97 index96 alt2">97</div><div class="line number98 index97 alt1">98</div><div class="line number99 index98 alt2">99</div><div class="line number100 index99 alt1">100</div><div class="line number101 index100 alt2">101</div><div class="line number102 index101 alt1">102</div><div class="line number103 index102 alt2">103</div><div class="line number104 index103 alt1">104</div><div class="line number105 index104 alt2">105</div><div class="line number106 index105 alt1">106</div><div class="line number107 index106 alt2">107</div><div class="line number108 index107 alt1">108</div><div class="line number109 index108 alt2">109</div><div class="line number110 index109 alt1">110</div><div class="line number111 index110 alt2">111</div><div class="line number112 index111 alt1">112</div><div class="line number113 index112 alt2">113</div><div class="line number114 index113 alt1">114</div><div class="line number115 index114 alt2">115</div><div class="line number116 index115 alt1">116</div><div class="line number117 index116 alt2">117</div><div class="line number118 index117 alt1">118</div><div class="line number119 index118 alt2">119</div><div class="line number120 index119 alt1">120</div><div class="line number121 index120 alt2">121</div><div class="line number122 index121 alt1">122</div><div class="line number123 index122 alt2">123</div><div class="line number124 index123 alt1">124</div><div class="line number125 index124 alt2">125</div><div class="line number126 index125 alt1">126</div><div class="line number127 index126 alt2">127</div><div class="line number128 index127 alt1">128</div><div class="line number129 index128 alt2">129</div><div class="line number130 index129 alt1">130</div><div class="line number131 index130 alt2">131</div><div class="line number132 index131 alt1">132</div><div class="line number133 index132 alt2">133</div><div class="line number134 index133 alt1">134</div><div class="line number135 index134 alt2">135</div><div class="line number136 index135 alt1">136</div><div class="line number137 index136 alt2">137</div><div class="line number138 index137 alt1">138</div><div class="line number139 index138 alt2">139</div><div class="line number140 index139 alt1">140</div><div class="line number141 index140 alt2">141</div><div class="line number142 index141 alt1">142</div><div class="line number143 index142 alt2">143</div><div class="line number144 index143 alt1">144</div><div class="line number145 index144 alt2">145</div><div class="line number146 index145 alt1">146</div><div class="line number147 index146 alt2">147</div><div class="line number148 index147 alt1">148</div><div class="line number149 index148 alt2">149</div><div class="line number150 index149 alt1">150</div><div class="line number151 index150 alt2">151</div><div class="line number152 index151 alt1">152</div><div class="line number153 index152 alt2">153</div><div class="line number154 index153 alt1">154</div><div class="line number155 index154 alt2">155</div><div class="line number156 index155 alt1">156</div><div class="line number157 index156 alt2">157</div><div class="line number158 index157 alt1">158</div><div class="line number159 index158 alt2">159</div><div class="line number160 index159 alt1">160</div><div class="line number161 index160 alt2">161</div><div class="line number162 index161 alt1">162</div><div class="line number163 index162 alt2">163</div><div class="line number164 index163 alt1">164</div><div class="line number165 index164 alt2">165</div><div class="line number166 index165 alt1">166</div><div class="line number167 index166 alt2">167</div><div class="line number168 index167 alt1">168</div><div class="line number169 index168 alt2">169</div><div class="line number170 index169 alt1">170</div><div class="line number171 index170 alt2">171</div><div class="line number172 index171 alt1">172</div><div class="line number173 index172 alt2">173</div><div class="line number174 index173 alt1">174</div><div class="line number175 index174 alt2">175</div><div class="line number176 index175 alt1">176</div><div class="line number177 index176 alt2">177</div><div class="line number178 index177 alt1">178</div><div class="line number179 index178 alt2">179</div><div class="line number180 index179 alt1">180</div><div class="line number181 index180 alt2">181</div><div class="line number182 index181 alt1">182</div><div class="line number183 index182 alt2">183</div><div class="line number184 index183 alt1">184</div><div class="line number185 index184 alt2">185</div><div class="line number186 index185 alt1">186</div><div class="line number187 index186 alt2">187</div><div class="line number188 index187 alt1">188</div><div class="line number189 index188 alt2">189</div><div class="line number190 index189 alt1">190</div><div class="line number191 index190 alt2">191</div><div class="line number192 index191 alt1">192</div><div class="line number193 index192 alt2">193</div><div class="line number194 index193 alt1">194</div><div class="line number195 index194 alt2">195</div><div class="line number196 index195 alt1">196</div><div class="line number197 index196 alt2">197</div><div class="line number198 index197 alt1">198</div><div class="line number199 index198 alt2">199</div><div class="line number200 index199 alt1">200</div><div class="line number201 index200 alt2">201</div><div class="line number202 index201 alt1">202</div><div class="line number203 index202 alt2">203</div><div class="line number204 index203 alt1">204</div><div class="line number205 index204 alt2">205</div><div class="line number206 index205 alt1">206</div><div class="line number207 index206 alt2">207</div><div class="line number208 index207 alt1">208</div><div class="line number209 index208 alt2">209</div><div class="line number210 index209 alt1">210</div><div class="line number211 index210 alt2">211</div><div class="line number212 index211 alt1">212</div><div class="line number213 index212 alt2">213</div><div class="line number214 index213 alt1">214</div><div class="line number215 index214 alt2">215</div><div class="line number216 index215 alt1">216</div><div class="line number217 index216 alt2">217</div><div class="line number218 index217 alt1">218</div><div class="line number219 index218 alt2">219</div><div class="line number220 index219 alt1">220</div><div class="line number221 index220 alt2">221</div><div class="line number222 index221 alt1">222</div><div class="line number223 index222 alt2">223</div><div class="line number224 index223 alt1">224</div><div class="line number225 index224 alt2">225</div><div class="line number226 index225 alt1">226</div><div class="line number227 index226 alt2">227</div><div class="line number228 index227 alt1">228</div><div class="line number229 index228 alt2">229</div><div class="line number230 index229 alt1">230</div><div class="line number231 index230 alt2">231</div><div class="line number232 index231 alt1">232</div><div class="line number233 index232 alt2">233</div><div class="line number234 index233 alt1">234</div><div class="line number235 index234 alt2">235</div><div class="line number236 index235 alt1">236</div><div class="line number237 index236 alt2">237</div><div class="line number238 index237 alt1">238</div><div class="line number239 index238 alt2">239</div><div class="line number240 index239 alt1">240</div><div class="line number241 index240 alt2">241</div><div class="line number242 index241 alt1">242</div><div class="line number243 index242 alt2">243</div><div class="line number244 index243 alt1">244</div><div class="line number245 index244 alt2">245</div><div class="line number246 index245 alt1">246</div><div class="line number247 index246 alt2">247</div><div class="line number248 index247 alt1">248</div><div class="line number249 index248 alt2">249</div><div class="line number250 index249 alt1">250</div><div class="line number251 index250 alt2">251</div><div class="line number252 index251 alt1">252</div><div class="line number253 index252 alt2">253</div><div class="line number254 index253 alt1">254</div><div class="line number255 index254 alt2">255</div><div class="line number256 index255 alt1">256</div><div class="line number257 index256 alt2">257</div><div class="line number258 index257 alt1">258</div><div class="line number259 index258 alt2">259</div><div class="line number260 index259 alt1">260</div><div class="line number261 index260 alt2">261</div><div class="line number262 index261 alt1">262</div><div class="line number263 index262 alt2">263</div><div class="line number264 index263 alt1">264</div><div class="line number265 index264 alt2">265</div><div class="line number266 index265 alt1">266</div><div class="line number267 index266 alt2">267</div><div class="line number268 index267 alt1">268</div><div class="line number269 index268 alt2">269</div><div class="line number270 index269 alt1">270</div><div class="line number271 index270 alt2">271</div><div class="line number272 index271 alt1">272</div><div class="line number273 index272 alt2">273</div><div class="line number274 index273 alt1">274</div><div class="line number275 index274 alt2">275</div><div class="line number276 index275 alt1">276</div><div class="line number277 index276 alt2">277</div><div class="line number278 index277 alt1">278</div><div class="line number279 index278 alt2">279</div><div class="line number280 index279 alt1">280</div><div class="line number281 index280 alt2">281</div><div class="line number282 index281 alt1">282</div><div class="line number283 index282 alt2">283</div><div class="line number284 index283 alt1">284</div><div class="line number285 index284 alt2">285</div><div class="line number286 index285 alt1">286</div><div class="line number287 index286 alt2">287</div><div class="line number288 index287 alt1">288</div><div class="line number289 index288 alt2">289</div><div class="line number290 index289 alt1">290</div><div class="line number291 index290 alt2">291</div><div class="line number292 index291 alt1">292</div><div class="line number293 index292 alt2">293</div><div class="line number294 index293 alt1">294</div><div class="line number295 index294 alt2">295</div><div class="line number296 index295 alt1">296</div><div class="line number297 index296 alt2">297</div><div class="line number298 index297 alt1">298</div><div class="line number299 index298 alt2">299</div><div class="line number300 index299 alt1">300</div><div class="line number301 index300 alt2">301</div><div class="line number302 index301 alt1">302</div><div class="line number303 index302 alt2">303</div><div class="line number304 index303 alt1">304</div><div class="line number305 index304 alt2">305</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="python comments">#!/usr/bin/env python</code></div><div class="line number2 index1 alt1"><code class="python comments"># -*- coding:utf-8 -*-</code></div><div class="line number3 index2 alt2"><code class="python comments">"""</code></div><div class="line number4 index3 alt1"><code class="python comments">MongoDB存储</code></div><div class="line number5 index4 alt2"><code class="python spaces"> </code><code class="python comments">在这里我们来看一下Python3下MongoDB的存储操作,在本节开始之前请确保你已经安装好了MongoDB并启动了其服务,另外安装好了Python</code></div><div class="line number6 index5 alt1"><code class="python spaces"> </code><code class="python comments">的PyMongo库。</code></div><div class="line number7 index6 alt2"> </div><div class="line number8 index7 alt1"><code class="python comments">连接MongoDB</code></div><div class="line number9 index8 alt2"><code class="python spaces"> </code><code class="python comments">连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,</code></div><div class="line number10 index9 alt1"><code class="python spaces"> </code><code class="python comments">第二个参数为端口port,端口如果不传默认是27017。</code></div><div class="line number11 index10 alt2"><code class="python comments">"""</code></div><div class="line number12 index11 alt1"><code class="python keyword">import</code> <code class="python plain">pymongo</code></div><div class="line number13 index12 alt2"><code class="python plain">client </code><code class="python keyword">=</code> <code class="python plain">pymongo.MongoClient(host</code><code class="python keyword">=</code><code class="python string">'localhost'</code><code class="python plain">, port</code><code class="python keyword">=</code><code class="python value">27017</code><code class="python plain">)</code></div><div class="line number14 index13 alt1"><code class="python comments">"""</code></div><div class="line number15 index14 alt2"><code class="python comments">这样我们就可以创建一个MongoDB的连接对象了。另外MongoClient的第一个参数host还可以直接传MongoDB的连接字符串,以mongodb开头,</code></div><div class="line number16 index15 alt1"><code class="python comments">例如:client = MongoClient('mongodb://localhost:27017/')可以达到同样的连接效果。</code></div><div class="line number17 index16 alt2"><code class="python comments">"""</code></div><div class="line number18 index17 alt1"><code class="python comments"># 指定数据库</code></div><div class="line number19 index18 alt2"><code class="python comments"># MongoDB中还分为一个个数据库,我们接下来的一步就是指定要操作哪个数据库,在这里我以test数据库为例进行说明,所以下一步我们</code></div><div class="line number20 index19 alt1"><code class="python comments"># 需要在程序中指定要使用的数据库。</code></div><div class="line number21 index20 alt2"> </div><div class="line number22 index21 alt1"><code class="python plain">db </code><code class="python keyword">=</code> <code class="python plain">client.test</code></div><div class="line number23 index22 alt2"><code class="python comments"># 调用client的test属性即可返回test数据库,当然也可以这样来指定:</code></div><div class="line number24 index23 alt1"><code class="python comments"># db = client['test']</code></div><div class="line number25 index24 alt2"><code class="python comments"># 两种方式是等价的。</code></div><div class="line number26 index25 alt1"> </div><div class="line number27 index26 alt2"><code class="python comments"># 指定集合</code></div><div class="line number28 index27 alt1"><code class="python comments"># MongoDB的每个数据库又包含了许多集合Collection,也就类似与关系型数据库中的表,下一步我们需要指定要操作的集合,</code></div><div class="line number29 index28 alt2"><code class="python comments"># 在这里我们指定一个集合名称为students,学生集合。还是和指定数据库类似,指定集合也有两种方式。</code></div><div class="line number30 index29 alt1"> </div><div class="line number31 index30 alt2"><code class="python plain">collection </code><code class="python keyword">=</code> <code class="python plain">db.students</code></div><div class="line number32 index31 alt1"><code class="python comments"># collection = db['students']</code></div><div class="line number33 index32 alt2"><code class="python comments"># 插入数据,接下来我们便可以进行数据插入了,对于students这个Collection,我们新建一条学生数据,以字典的形式表示:</code></div><div class="line number34 index33 alt1"> </div><div class="line number35 index34 alt2"><code class="python plain">student </code><code class="python keyword">=</code> <code class="python plain">{</code></div><div class="line number36 index35 alt1"><code class="python spaces"> </code><code class="python string">'id'</code><code class="python plain">: </code><code class="python string">'20170101'</code><code class="python plain">,</code></div><div class="line number37 index36 alt2"><code class="python spaces"> </code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Jordan'</code><code class="python plain">,</code></div><div class="line number38 index37 alt1"><code class="python spaces"> </code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">,</code></div><div class="line number39 index38 alt2"><code class="python spaces"> </code><code class="python string">'gender'</code><code class="python plain">: </code><code class="python string">'male'</code></div><div class="line number40 index39 alt1"><code class="python plain">}</code></div><div class="line number41 index40 alt2"><code class="python comments"># 在这里我们指定了学生的学号、姓名、年龄和性别,然后接下来直接调用collection的insert()方法即可插入数据。</code></div><div class="line number42 index41 alt1"> </div><div class="line number43 index42 alt2"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.insert(student)</code></div><div class="line number44 index43 alt1"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number45 index44 alt2"><code class="python comments"># 在MongoDB中,每条数据其实都有一个_id属性来唯一标识,如果没有显式指明_id,MongoDB会自动产生一个ObjectId类型的_id属性。</code></div><div class="line number46 index45 alt1"><code class="python comments"># insert()方法会在执行后返回的_id值。</code></div><div class="line number47 index46 alt2"> </div><div class="line number48 index47 alt1"><code class="python comments"># 运行结果:</code></div><div class="line number49 index48 alt2"><code class="python comments"># 5932a68615c2606814c91f3d</code></div><div class="line number50 index49 alt1"><code class="python comments"># 当然我们也可以同时插入多条数据,只需要以列表形式传递即可,示例如下:</code></div><div class="line number51 index50 alt2"> </div><div class="line number52 index51 alt1"><code class="python plain">student1 </code><code class="python keyword">=</code> <code class="python plain">{</code></div><div class="line number53 index52 alt2"><code class="python spaces"> </code><code class="python string">'id'</code><code class="python plain">: </code><code class="python string">'20170101'</code><code class="python plain">,</code></div><div class="line number54 index53 alt1"><code class="python spaces"> </code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Jordan'</code><code class="python plain">,</code></div><div class="line number55 index54 alt2"><code class="python spaces"> </code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">,</code></div><div class="line number56 index55 alt1"><code class="python spaces"> </code><code class="python string">'gender'</code><code class="python plain">: </code><code class="python string">'male'</code></div><div class="line number57 index56 alt2"><code class="python plain">}</code></div><div class="line number58 index57 alt1"> </div><div class="line number59 index58 alt2"><code class="python plain">student2 </code><code class="python keyword">=</code> <code class="python plain">{</code></div><div class="line number60 index59 alt1"><code class="python spaces"> </code><code class="python string">'id'</code><code class="python plain">: </code><code class="python string">'20170202'</code><code class="python plain">,</code></div><div class="line number61 index60 alt2"><code class="python spaces"> </code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Mike'</code><code class="python plain">,</code></div><div class="line number62 index61 alt1"><code class="python spaces"> </code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">21</code><code class="python plain">,</code></div><div class="line number63 index62 alt2"><code class="python spaces"> </code><code class="python string">'gender'</code><code class="python plain">: </code><code class="python string">'male'</code></div><div class="line number64 index63 alt1"><code class="python plain">}</code></div><div class="line number65 index64 alt2"> </div><div class="line number66 index65 alt1"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.insert()</code></div><div class="line number67 index66 alt2"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number68 index67 alt1"><code class="python comments"># 返回的结果是对应的_id的集合,运行结果:</code></div><div class="line number69 index68 alt2"><code class="python comments"># </code></div><div class="line number70 index69 alt1"><code class="python comments"># 实际上在PyMongo 3.X版本中,insert()方法官方已经不推荐使用了,当然继续使用也没有什么问题,</code></div><div class="line number71 index70 alt2"><code class="python comments"># 官方推荐使用insert_one()和insert_many()方法将插入单条和多条记录分开。</code></div><div class="line number72 index71 alt1"> </div><div class="line number73 index72 alt2"><code class="python plain">student </code><code class="python keyword">=</code> <code class="python plain">{</code></div><div class="line number74 index73 alt1"><code class="python spaces"> </code><code class="python string">'id'</code><code class="python plain">: </code><code class="python string">'20170101'</code><code class="python plain">,</code></div><div class="line number75 index74 alt2"><code class="python spaces"> </code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Jordan'</code><code class="python plain">,</code></div><div class="line number76 index75 alt1"><code class="python spaces"> </code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">,</code></div><div class="line number77 index76 alt2"><code class="python spaces"> </code><code class="python string">'gender'</code><code class="python plain">: </code><code class="python string">'male'</code></div><div class="line number78 index77 alt1"><code class="python plain">}</code></div><div class="line number79 index78 alt2"> </div><div class="line number80 index79 alt1"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.insert_one(student)</code></div><div class="line number81 index80 alt2"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number82 index81 alt1"><code class="python functions">print</code><code class="python plain">(result.inserted_id)</code></div><div class="line number83 index82 alt2"><code class="python comments"># 运行结果:</code></div><div class="line number84 index83 alt1"><code class="python comments"># <pymongo.results.InsertOneResult object at 0x10d68b558></code></div><div class="line number85 index84 alt2"><code class="python comments"># 5932ab0f15c2606f0c1cf6c5</code></div><div class="line number86 index85 alt1"><code class="python comments"># 返回结果和insert()方法不同,这次返回的是InsertOneResult对象,我们可以调用其inserted_id属性获取_id。</code></div><div class="line number87 index86 alt2"> </div><div class="line number88 index87 alt1"><code class="python comments"># 对于insert_many()方法,我们可以将数据以列表形式传递即可,示例如下:</code></div><div class="line number89 index88 alt2"> </div><div class="line number90 index89 alt1"><code class="python plain">student1 </code><code class="python keyword">=</code> <code class="python plain">{</code></div><div class="line number91 index90 alt2"><code class="python spaces"> </code><code class="python string">'id'</code><code class="python plain">: </code><code class="python string">'20170101'</code><code class="python plain">,</code></div><div class="line number92 index91 alt1"><code class="python spaces"> </code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Jordan'</code><code class="python plain">,</code></div><div class="line number93 index92 alt2"><code class="python spaces"> </code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">,</code></div><div class="line number94 index93 alt1"><code class="python spaces"> </code><code class="python string">'gender'</code><code class="python plain">: </code><code class="python string">'male'</code></div><div class="line number95 index94 alt2"><code class="python plain">}</code></div><div class="line number96 index95 alt1"> </div><div class="line number97 index96 alt2"><code class="python plain">student2 </code><code class="python keyword">=</code> <code class="python plain">{</code></div><div class="line number98 index97 alt1"><code class="python spaces"> </code><code class="python string">'id'</code><code class="python plain">: </code><code class="python string">'20170202'</code><code class="python plain">,</code></div><div class="line number99 index98 alt2"><code class="python spaces"> </code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Mike'</code><code class="python plain">,</code></div><div class="line number100 index99 alt1"><code class="python spaces"> </code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">21</code><code class="python plain">,</code></div><div class="line number101 index100 alt2"><code class="python spaces"> </code><code class="python string">'gender'</code><code class="python plain">: </code><code class="python string">'male'</code></div><div class="line number102 index101 alt1"><code class="python plain">}</code></div><div class="line number103 index102 alt2"> </div><div class="line number104 index103 alt1"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.insert_many()</code></div><div class="line number105 index104 alt2"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number106 index105 alt1"><code class="python functions">print</code><code class="python plain">(result.inserted_ids)</code></div><div class="line number107 index106 alt2"><code class="python comments"># insert_many()方法返回的类型是InsertManyResult,调用inserted_ids属性可以获取插入数据的_id列表,运行结果:</code></div><div class="line number108 index107 alt1"> </div><div class="line number109 index108 alt2"><code class="python comments"># <pymongo.results.InsertManyResult object at 0x101dea558></code></div><div class="line number110 index109 alt1"><code class="python comments"># </code></div><div class="line number111 index110 alt2"><code class="python comments"># 查询,插入数据后我们可以利用find_one()或find()方法进行查询,find_one()查询得到是单个结果,find()则返回多个结果。</code></div><div class="line number112 index111 alt1"> </div><div class="line number113 index112 alt2"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.find_one({</code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Mike'</code><code class="python plain">})</code></div><div class="line number114 index113 alt1"><code class="python functions">print</code><code class="python plain">(</code><code class="python functions">type</code><code class="python plain">(result))</code></div><div class="line number115 index114 alt2"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number116 index115 alt1"><code class="python comments"># 在这里我们查询name为Mike的数据,它的返回结果是字典类型,运行结果:</code></div><div class="line number117 index116 alt2"><code class="python comments"># <class'dict'></code></div><div class="line number118 index117 alt1"><code class="python comments"># {'_id': ObjectId('5932a80115c2606a59e8a049'), 'id': '20170202', 'name': 'Mike', 'age': 21, 'gender': 'male'}</code></div><div class="line number119 index118 alt2"><code class="python comments"># 可以发现它多了一个_id属性,这就是MongoDB在插入的过程中自动添加的。</code></div><div class="line number120 index119 alt1"> </div><div class="line number121 index120 alt2"><code class="python comments"># 我们也可以直接根据ObjectId来查询,这里需要使用bson库里面的ObjectId。</code></div><div class="line number122 index121 alt1"> </div><div class="line number123 index122 alt2"><code class="python keyword">from</code> <code class="python plain">bson.objectid </code><code class="python keyword">import</code> <code class="python plain">ObjectId</code></div><div class="line number124 index123 alt1"> </div><div class="line number125 index124 alt2"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.find_one({</code><code class="python string">'_id'</code><code class="python plain">: ObjectId(</code><code class="python string">'593278c115c2602667ec6bae'</code><code class="python plain">)})</code></div><div class="line number126 index125 alt1"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number127 index126 alt2"><code class="python comments"># 其查询结果依然是字典类型,运行结果:</code></div><div class="line number128 index127 alt1"> </div><div class="line number129 index128 alt2"><code class="python comments"># {' ObjectId('593278c115c2602667ec6bae'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}</code></div><div class="line number130 index129 alt1"><code class="python comments"># 当然如果查询_id':结果不存在则会返回None。</code></div><div class="line number131 index130 alt2"> </div><div class="line number132 index131 alt1"><code class="python comments"># 对于多条数据的查询,我们可以使用find()方法,例如在这里查找年龄为20的数据,示例如下:</code></div><div class="line number133 index132 alt2"> </div><div class="line number134 index133 alt1"><code class="python plain">results </code><code class="python keyword">=</code> <code class="python plain">collection.find({</code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">})</code></div><div class="line number135 index134 alt2"><code class="python functions">print</code><code class="python plain">(results)</code></div><div class="line number136 index135 alt1"><code class="python keyword">for</code> <code class="python plain">result </code><code class="python keyword">in</code> <code class="python plain">results:</code></div><div class="line number137 index136 alt2"><code class="python spaces"> </code><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number138 index137 alt1"><code class="python comments"># 运行结果:</code></div><div class="line number139 index138 alt2"> </div><div class="line number140 index139 alt1"><code class="python comments"># <pymongo.cursor.Cursor object at 0x1032d5128></code></div><div class="line number141 index140 alt2"><code class="python comments"># {'_id': ObjectId('593278c115c2602667ec6bae'), 'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}</code></div><div class="line number142 index141 alt1"><code class="python comments"># {'_id': ObjectId('593278c815c2602678bb2b8d'), 'id': '20170102', 'name': 'Kevin', 'age': 20, 'gender': 'male'}</code></div><div class="line number143 index142 alt2"><code class="python comments"># {'_id': ObjectId('593278d815c260269d7645a8'), 'id': '20170103', 'name': 'Harden', 'age': 20, 'gender': 'male'}</code></div><div class="line number144 index143 alt1"><code class="python comments"># 返回结果是Cursor类型,相当于一个生成器,我们需要遍历取到所有的结果,每一个结果都是字典类型。</code></div><div class="line number145 index144 alt2"> </div><div class="line number146 index145 alt1"><code class="python comments"># 如果要查询年龄大于20的数据,则写法如下:</code></div><div class="line number147 index146 alt2"> </div><div class="line number148 index147 alt1"><code class="python plain">results </code><code class="python keyword">=</code> <code class="python plain">collection.find({</code><code class="python string">'age'</code><code class="python plain">: {</code><code class="python string">'$gt'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">}})</code></div><div class="line number149 index148 alt2"><code class="python comments"># 在这里查询的条件键值已经不是单纯的数字了,而是一个字典,其键名为比较符号$gt,意思是大于,键值为20,这样便可以查询出所有</code></div><div class="line number150 index149 alt1"><code class="python comments"># 年龄大于20的数据。</code></div><div class="line number151 index150 alt2"> </div><div class="line number152 index151 alt1"><code class="python comments"># 在这里将比较符号归纳如下表:</code></div><div class="line number153 index152 alt2"><code class="python comments">"""</code></div><div class="line number154 index153 alt1"><code class="python comments">符号含义示例</code></div><div class="line number155 index154 alt2"><code class="python comments">$lt小于{'age': {'$lt': 20}}</code></div><div class="line number156 index155 alt1"><code class="python comments">$gt大于{'age': {'$gt': 20}}</code></div><div class="line number157 index156 alt2"><code class="python comments">$lte小于等于{'age': {'$lte': 20}}</code></div><div class="line number158 index157 alt1"><code class="python comments">$gte大于等于{'age': {'$gte': 20}}</code></div><div class="line number159 index158 alt2"><code class="python comments">$ne不等于{'age': {'$ne': 20}}</code></div><div class="line number160 index159 alt1"><code class="python comments">$in在范围内{'age': {'$in': }}</code></div><div class="line number161 index160 alt2"><code class="python comments">$nin不在范围内{'age': {'$nin': }}</code></div><div class="line number162 index161 alt1"><code class="python comments">"""</code></div><div class="line number163 index162 alt2"><code class="python comments"># 另外还可以进行正则匹配查询,例如查询名字以M开头的学生数据,示例如下:</code></div><div class="line number164 index163 alt1"> </div><div class="line number165 index164 alt2"><code class="python plain">results </code><code class="python keyword">=</code> <code class="python plain">collection.find({</code><code class="python string">'name'</code><code class="python plain">: {</code><code class="python string">'$regex'</code><code class="python plain">: </code><code class="python string">'^M.*'</code><code class="python plain">}})</code></div><div class="line number166 index165 alt1"><code class="python comments"># 在这里使用了$regex来指定正则匹配,^M.*代表以M开头的正则表达式,这样就可以查询所有符合该正则的结果。</code></div><div class="line number167 index166 alt2"> </div><div class="line number168 index167 alt1"><code class="python comments"># 在这里将一些功能符号再归类如下:</code></div><div class="line number169 index168 alt2"><code class="python comments">"""</code></div><div class="line number170 index169 alt1"><code class="python comments">符号含义示例示例含义</code></div><div class="line number171 index170 alt2"><code class="python comments">$regex匹配正则{'name': {'$regex': '^M.*'}}name以M开头</code></div><div class="line number172 index171 alt1"><code class="python comments">$exists属性是否存在{'name': {'$exists': True}}name属性存在</code></div><div class="line number173 index172 alt2"><code class="python comments">$type类型判断{'age': {'$type': 'int'}}age的类型为int</code></div><div class="line number174 index173 alt1"><code class="python comments">$mod数字模操作{'age': {'$mod': }}年龄模5余0</code></div><div class="line number175 index174 alt2"><code class="python comments">$text文本查询{'$text': {'$search': 'Mike'}}text类型的属性中包含Mike字符串</code></div><div class="line number176 index175 alt1"><code class="python comments">$where高级条件查询{'$where': 'obj.fans_count == obj.follows_count'}自身粉丝数等于关注数</code></div><div class="line number177 index176 alt2"><code class="python comments">"""</code></div><div class="line number178 index177 alt1"><code class="python comments"># 这些操作的更详细用法在可以在MongoDB官方文档找到:</code></div><div class="line number179 index178 alt2"><code class="python comments"># https://docs.mongodb.com/manual/reference/operator/query/</code></div><div class="line number180 index179 alt1"> </div><div class="line number181 index180 alt2"><code class="python comments"># 计数</code></div><div class="line number182 index181 alt1"><code class="python comments"># 要统计查询结果有多少条数据,可以调用count()方法,如统计所有数据条数:</code></div><div class="line number183 index182 alt2"> </div><div class="line number184 index183 alt1"><code class="python plain">count </code><code class="python keyword">=</code> <code class="python plain">collection.find().count()</code></div><div class="line number185 index184 alt2"><code class="python functions">print</code><code class="python plain">(count)</code></div><div class="line number186 index185 alt1"><code class="python comments"># 或者统计符合某个条件的数据:</code></div><div class="line number187 index186 alt2"> </div><div class="line number188 index187 alt1"><code class="python plain">count </code><code class="python keyword">=</code> <code class="python plain">collection.find({</code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">}).count()</code></div><div class="line number189 index188 alt2"><code class="python functions">print</code><code class="python plain">(count)</code></div><div class="line number190 index189 alt1"><code class="python comments"># 排序</code></div><div class="line number191 index190 alt2"><code class="python comments"># 可以调用sort方法,传入排序的字段及升降序标志即可,示例如下:</code></div><div class="line number192 index191 alt1"> </div><div class="line number193 index192 alt2"><code class="python plain">results </code><code class="python keyword">=</code> <code class="python plain">collection.find().sort(</code><code class="python string">'name'</code><code class="python plain">, pymongo.ASCENDING)</code></div><div class="line number194 index193 alt1"><code class="python functions">print</code><code class="python plain">( </code><code class="python keyword">for</code> <code class="python plain">result </code><code class="python keyword">in</code> <code class="python plain">results])</code></div><div class="line number195 index194 alt2"><code class="python comments"># 运行结果:</code></div><div class="line number196 index195 alt1"> </div><div class="line number197 index196 alt2"><code class="python comments"># ['Harden', 'Jordan', 'Kevin', 'Mark', 'Mike']</code></div><div class="line number198 index197 alt1"><code class="python comments"># 偏移,可能想只取某几个元素,在这里可以利用skip()方法偏移几个位置,比如偏移2,就忽略前2个元素,得到第三个及以后的元素。</code></div><div class="line number199 index198 alt2"> </div><div class="line number200 index199 alt1"><code class="python plain">results </code><code class="python keyword">=</code> <code class="python plain">collection.find().sort(</code><code class="python string">'name'</code><code class="python plain">, pymongo.ASCENDING).skip(</code><code class="python value">2</code><code class="python plain">)</code></div><div class="line number201 index200 alt2"><code class="python functions">print</code><code class="python plain">( </code><code class="python keyword">for</code> <code class="python plain">result </code><code class="python keyword">in</code> <code class="python plain">results])</code></div><div class="line number202 index201 alt1"><code class="python comments"># 运行结果:</code></div><div class="line number203 index202 alt2"><code class="python comments"># ['Kevin', 'Mark', 'Mike']</code></div><div class="line number204 index203 alt1"><code class="python comments"># 另外还可以用limit()方法指定要取的结果个数,示例如下:</code></div><div class="line number205 index204 alt2"> </div><div class="line number206 index205 alt1"><code class="python plain">results </code><code class="python keyword">=</code> <code class="python plain">collection.find().sort(</code><code class="python string">'name'</code><code class="python plain">, pymongo.ASCENDING).skip(</code><code class="python value">2</code><code class="python plain">).limit(</code><code class="python value">2</code><code class="python plain">)</code></div><div class="line number207 index206 alt2"><code class="python functions">print</code><code class="python plain">( </code><code class="python keyword">for</code> <code class="python plain">result </code><code class="python keyword">in</code> <code class="python plain">results])</code></div><div class="line number208 index207 alt1"><code class="python comments"># 运行结果:</code></div><div class="line number209 index208 alt2"><code class="python comments"># ['Kevin', 'Mark']</code></div><div class="line number210 index209 alt1"><code class="python comments"># 如果不加limit()原本会返回三个结果,加了限制之后,会截取2个结果返回。</code></div><div class="line number211 index210 alt2"> </div><div class="line number212 index211 alt1"><code class="python comments"># 值得注意的是,在数据库数量非常庞大的时候,如千万、亿级别,最好不要使用大的偏移量来查询数据,很可能会导致内存溢出,</code></div><div class="line number213 index212 alt2"><code class="python comments"># 可以使用类似find({'_id': {'$gt': ObjectId('593278c815c2602678bb2b8d')}}) 这样的方法来查询,记录好上次查询的_id。</code></div><div class="line number214 index213 alt1"> </div><div class="line number215 index214 alt2"><code class="python comments"># 更新</code></div><div class="line number216 index215 alt1"><code class="python comments"># 对于数据更新可以使用update()方法,指定更新的条件和更新后的数据即可,例如:</code></div><div class="line number217 index216 alt2"> </div><div class="line number218 index217 alt1"><code class="python plain">condition </code><code class="python keyword">=</code> <code class="python plain">{</code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Kevin'</code><code class="python plain">}</code></div><div class="line number219 index218 alt2"><code class="python plain">student </code><code class="python keyword">=</code> <code class="python plain">collection.find_one(condition)</code></div><div class="line number220 index219 alt1"><code class="python plain">student[</code><code class="python string">'age'</code><code class="python plain">] </code><code class="python keyword">=</code> <code class="python value">25</code></div><div class="line number221 index220 alt2"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.update(condition, student)</code></div><div class="line number222 index221 alt1"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number223 index222 alt2"><code class="python comments"># 在这里我们将name为Kevin的数据的年龄进行更新,首先指定查询条件,然后将数据查询出来,修改年龄,</code></div><div class="line number224 index223 alt1"><code class="python comments"># 之后调用update方法将原条件和修改后的数据传入,即可完成数据的更新。</code></div><div class="line number225 index224 alt2"> </div><div class="line number226 index225 alt1"><code class="python comments"># 运行结果:</code></div><div class="line number227 index226 alt2"> </div><div class="line number228 index227 alt1"><code class="python comments"># {'ok': 1, 'nModified': 1, 'n': 1, 'updatedExisting': True}</code></div><div class="line number229 index228 alt2"><code class="python comments"># 返回结果是字典形式,ok即代表执行成功,nModified代表影响的数据条数。</code></div><div class="line number230 index229 alt1"> </div><div class="line number231 index230 alt2"><code class="python comments"># 另外update()方法其实也是官方不推荐使用的方法,在这里也分了update_one()方法和update_many()方法,用法更加严格,</code></div><div class="line number232 index231 alt1"><code class="python comments"># 第二个参数需要使用$类型操作符作为字典的键名,我们用示例感受一下。</code></div><div class="line number233 index232 alt2"> </div><div class="line number234 index233 alt1"><code class="python plain">condition </code><code class="python keyword">=</code> <code class="python plain">{</code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Kevin'</code><code class="python plain">}</code></div><div class="line number235 index234 alt2"><code class="python plain">student </code><code class="python keyword">=</code> <code class="python plain">collection.find_one(condition)</code></div><div class="line number236 index235 alt1"><code class="python plain">student[</code><code class="python string">'age'</code><code class="python plain">] </code><code class="python keyword">=</code> <code class="python value">26</code></div><div class="line number237 index236 alt2"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.update_one(condition, {</code><code class="python string">'$set'</code><code class="python plain">: student})</code></div><div class="line number238 index237 alt1"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number239 index238 alt2"><code class="python functions">print</code><code class="python plain">(result.matched_count, result.modified_count)</code></div><div class="line number240 index239 alt1"><code class="python comments"># 在这里调用了update_one方法,第二个参数不能再直接传入修改后的字典,而是需要使用{'$set': student}这样的形式,</code></div><div class="line number241 index240 alt2"><code class="python comments"># 其返回结果是UpdateResult类型,然后调用matched_count和modified_count属性分别可以获得匹配的数据条数和影响的数据条数。</code></div><div class="line number242 index241 alt1"> </div><div class="line number243 index242 alt2"><code class="python comments"># 运行结果:</code></div><div class="line number244 index243 alt1"><code class="python comments">#</code></div><div class="line number245 index244 alt2"><code class="python comments"># <pymongo.results.UpdateResult object at 0x10d17b678></code></div><div class="line number246 index245 alt1"><code class="python comments"># 1 0</code></div><div class="line number247 index246 alt2"><code class="python comments"># 我们再看一个例子:</code></div><div class="line number248 index247 alt1"> </div><div class="line number249 index248 alt2"><code class="python plain">condition </code><code class="python keyword">=</code> <code class="python plain">{</code><code class="python string">'age'</code><code class="python plain">: {</code><code class="python string">'$gt'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">}}</code></div><div class="line number250 index249 alt1"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.update_one(condition, {</code><code class="python string">'$inc'</code><code class="python plain">: {</code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">1</code><code class="python plain">}})</code></div><div class="line number251 index250 alt2"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number252 index251 alt1"><code class="python functions">print</code><code class="python plain">(result.matched_count, result.modified_count)</code></div><div class="line number253 index252 alt2"><code class="python comments"># 在这里我们指定查询条件为年龄大于20,然后更新条件为{'$inc': {'age': 1}},执行之后会讲第一条符合条件的数据年龄加1。</code></div><div class="line number254 index253 alt1"> </div><div class="line number255 index254 alt2"><code class="python comments"># 运行结果:</code></div><div class="line number256 index255 alt1"><code class="python comments">#</code></div><div class="line number257 index256 alt2"><code class="python comments"># <pymongo.results.UpdateResult object at 0x10b8874c8></code></div><div class="line number258 index257 alt1"><code class="python comments"># 1 1</code></div><div class="line number259 index258 alt2"><code class="python comments"># 可以看到匹配条数为1条,影响条数也为1条。</code></div><div class="line number260 index259 alt1"> </div><div class="line number261 index260 alt2"><code class="python comments"># 如果调用update_many()方法,则会将所有符合条件的数据都更新,示例如下:</code></div><div class="line number262 index261 alt1"> </div><div class="line number263 index262 alt2"><code class="python plain">condition </code><code class="python keyword">=</code> <code class="python plain">{</code><code class="python string">'age'</code><code class="python plain">: {</code><code class="python string">'$gt'</code><code class="python plain">: </code><code class="python value">20</code><code class="python plain">}}</code></div><div class="line number264 index263 alt1"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.update_many(condition, {</code><code class="python string">'$inc'</code><code class="python plain">: {</code><code class="python string">'age'</code><code class="python plain">: </code><code class="python value">1</code><code class="python plain">}})</code></div><div class="line number265 index264 alt2"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number266 index265 alt1"><code class="python functions">print</code><code class="python plain">(result.matched_count, result.modified_count)</code></div><div class="line number267 index266 alt2"><code class="python comments"># 这时候匹配条数就不再为1条了,运行结果如下:</code></div><div class="line number268 index267 alt1"><code class="python comments">#</code></div><div class="line number269 index268 alt2"><code class="python comments"># <pymongo.results.UpdateResult object at 0x10c6384c8></code></div><div class="line number270 index269 alt1"><code class="python comments"># 3 3</code></div><div class="line number271 index270 alt2"><code class="python comments"># 可以看到这时所有匹配到的数据都会被更新。</code></div><div class="line number272 index271 alt1"> </div><div class="line number273 index272 alt2"><code class="python comments"># 删除</code></div><div class="line number274 index273 alt1"><code class="python comments"># 删除操作比较简单,直接调用remove()方法指定删除的条件即可,符合条件的所有数据均会被删除,示例如下:</code></div><div class="line number275 index274 alt2"> </div><div class="line number276 index275 alt1"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.remove({</code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Kevin'</code><code class="python plain">})</code></div><div class="line number277 index276 alt2"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number278 index277 alt1"><code class="python comments"># 运行结果:</code></div><div class="line number279 index278 alt2"><code class="python comments">#</code></div><div class="line number280 index279 alt1"><code class="python comments"># {'ok': 1, 'n': 1}</code></div><div class="line number281 index280 alt2"><code class="python comments"># 另外依然存在两个新的推荐方法,delete_one()和delete_many()方法,示例如下:</code></div><div class="line number282 index281 alt1"> </div><div class="line number283 index282 alt2"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.delete_one({</code><code class="python string">'name'</code><code class="python plain">: </code><code class="python string">'Kevin'</code><code class="python plain">})</code></div><div class="line number284 index283 alt1"><code class="python functions">print</code><code class="python plain">(result)</code></div><div class="line number285 index284 alt2"><code class="python functions">print</code><code class="python plain">(result.deleted_count)</code></div><div class="line number286 index285 alt1"><code class="python plain">result </code><code class="python keyword">=</code> <code class="python plain">collection.delete_many({</code><code class="python string">'age'</code><code class="python plain">: {</code><code class="python string">'$lt'</code><code class="python plain">: </code><code class="python value">25</code><code class="python plain">}})</code></div><div class="line number287 index286 alt2"><code class="python functions">print</code><code class="python plain">(result.deleted_count)</code></div><div class="line number288 index287 alt1"><code class="python comments"># 运行结果:</code></div><div class="line number289 index288 alt2"> </div><div class="line number290 index289 alt1"><code class="python comments"># <pymongo.results.DeleteResult object at 0x10e6ba4c8></code></div><div class="line number291 index290 alt2"><code class="python comments"># 1</code></div><div class="line number292 index291 alt1"><code class="python comments"># 4</code></div><div class="line number293 index292 alt2"><code class="python comments"># delete_one()即删除第一条符合条件的数据,delete_many()即删除所有符合条件的数据,返回结果是DeleteResult类型,</code></div><div class="line number294 index293 alt1"><code class="python comments"># 可以调用deleted_count属性获取删除的数据条数。</code></div><div class="line number295 index294 alt2"> </div><div class="line number296 index295 alt1"><code class="python comments"># 更多</code></div><div class="line number297 index296 alt2"><code class="python comments"># 另外PyMongo还提供了一些组合方法,如find_one_and_delete()、find_one_and_replace()、find_one_and_update(),</code></div><div class="line number298 index297 alt1"><code class="python comments"># 就是查找后删除、替换、更新操作,用法与上述方法基本一致。</code></div><div class="line number299 index298 alt2"> </div><div class="line number300 index299 alt1"><code class="python comments"># 另外还可以对索引进行操作,如create_index()、create_indexes()、drop_index()等。</code></div><div class="line number301 index300 alt2"> </div><div class="line number302 index301 alt1"><code class="python comments"># 详细用法可以参见官方文档:http://api.mongodb.com/python/current/api/pymongo/collection.html</code></div><div class="line number303 index302 alt2"> </div><div class="line number304 index303 alt1"><code class="python comments"># 另外还有对数据库、集合本身以及其他的一些操作,在这不再一一讲解,可以参见</code></div><div class="line number305 index304 alt2"><code class="python comments"># 官方文档:http://api.mongodb.com/python/current/api/pymongo/</code></div></div></td></tr></tbody></table></div></div>
</div>
<p> </p>
</div>
<div id="MySignature"><br><br>
来源:https://www.cnblogs.com/caiwenjun/p/12024988.html
頁:
[1]