一岁就会笑 發表於 2019-7-18 10:13:00

Python操作MongoDB

<p align="left"><span style="font-size: 14pt">python操作MongoDB说明:</span><br>
&nbsp;&nbsp;&nbsp;<span style="font-size: 14pt"> 1.pip install pymongo</span><br>
&nbsp;&nbsp;&nbsp; <span style="font-size: 14pt">2.连接MongDB数据库</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> pymongo
myclient</span>=pymongo.MongoClient(host=<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">127.0.0.1</span><span style="color: rgba(128, 0, 0, 1)">'</span>,port=27017)   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">指定主机和端口号创建客户端</span>
mydb=myclient[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dbtest</span><span style="color: rgba(128, 0, 0, 1)">'</span>]<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">数据库使用</span>
mycol=mydb[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">t1</span><span style="color: rgba(128, 0, 0, 1)">'</span>]<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">表(集合)使用</span></pre>
</div>
<p>&nbsp;<span style="font-size: 14pt">&nbsp;&nbsp; 3.集合操作:</span></p>
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: rgba(255, 0, 0, 1)">&nbsp; <span style="font-size: 14pt">增:</span></span></strong>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<div class="cnblogs_code">
<pre>(1)insert_one()----<span style="color: rgba(0, 0, 0, 1)">单条插入
    db.collection.insert_one({})
(</span>2)insert_many()----<span style="color: rgba(0, 0, 0, 1)">多条插入
    db.collection.insert_many([{},{}...])</span></pre>
</div>
<p>&nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgba(255, 0, 0, 1)"><strong>&nbsp; <span style="font-size: 14pt">查:</span></strong></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<div class="cnblogs_code">
<pre>(1)find()----<span style="color: rgba(0, 0, 0, 1)">查询符合条件的所有数据
    db.collection.find(查询条件)
(</span>2)find_one()----<span style="color: rgba(0, 0, 0, 1)">查询符合跳进的第一条数据
    db.collection.find_one(查询条件)</span></pre>
</div>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: rgba(0, 255, 0, 1)"> &nbsp;&nbsp;</span><span style="font-size: 18px"><span style="color: rgba(0, 255, 0, 1)"><strong>查询关键字</strong>:</span>&nbsp;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<div class="cnblogs_code">
<pre>(1)$<span style="color: rgba(0, 0, 255, 1)">and</span>----<span style="color: rgba(0, 0, 0, 1)">并列查询
      db.collection.find({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$and</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:[{},{}...]})
(</span>2)$<span style="color: rgba(0, 0, 255, 1)">or</span>----<span style="color: rgba(0, 0, 0, 1)">或条件查询
      db.collection.find({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$or</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:[{},{}...]})
(</span>3)$<span style="color: rgba(0, 0, 255, 1)">in</span>----<span style="color: rgba(0, 0, 0, 1)">范围查询
      db.collection.find({field:{</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$in</span><span style="color: rgba(128, 0, 0, 1)">'</span>:[<span style="color: rgba(128, 0, 0, 1)">''</span>,<span style="color: rgba(128, 0, 0, 1)">''</span><span style="color: rgba(0, 0, 0, 1)">...]}})
(</span>4)$all----<span style="color: rgba(0, 0, 0, 1)">子集查询
      db.collection.find({field:{</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$all</span><span style="color: rgba(128, 0, 0, 1)">'</span>:[<span style="color: rgba(128, 0, 0, 1)">''</span>,<span style="color: rgba(128, 0, 0, 1)">''</span>...]}})</pre>
</div>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="font-size: 18px"><span style="color: rgba(0, 255, 0, 1)"><strong>查询条件操作符</strong>:</span>&nbsp; &nbsp;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<div class="cnblogs_code">
<pre>(1)$lt----<span style="color: rgba(0, 0, 0, 1)">小于
      db.collection.find({field:{</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$lt</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:value}})
(</span>2)$gt----<span style="color: rgba(0, 0, 0, 1)">大于
      db.collection.find({field:{</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$gt</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:value}})
(</span>3)$eq----<span style="color: rgba(0, 0, 0, 1)">等于
      db.collection.find({field:{</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$eq</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:value}})
(</span>4)$lte----<span style="color: rgba(0, 0, 0, 1)">小于等于
      db.collection.find({field:{</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$lte</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:value}})
(</span>5)$gte----<span style="color: rgba(0, 0, 0, 1)">大于等于
      db.collection.find({field:{</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$gte</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:value}})
(</span>6)$ne----<span style="color: rgba(0, 0, 0, 1)">不等于
      db.collection.find({field:{</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$ne</span><span style="color: rgba(128, 0, 0, 1)">'</span>:value}})</pre>
</div>
<p>    <span style="font-size: 18px"><strong><span style="color: rgba(0, 255, 0, 1)">数据排序+跳跃+范围:</span></strong></span>&nbsp;</p>
<div class="cnblogs_code">
<pre>(1)sort(filed,pymongo.ASCENDING/pymongo.DESCENDING)----对查询结果升序/<span style="color: rgba(0, 0, 0, 1)">降序排序
      db.collection.find({}).sort()
(</span>2)skip(num)----<span style="color: rgba(0, 0, 0, 1)">对查询结果进行跳跃取值
      db.collection.find({}).skip()
(</span>3)limit(num)----<span style="color: rgba(0, 0, 0, 1)">对查询结果进行范围截取
      db.collection.find({}).limit()
(</span>4)优先级:sort&gt;skip&gt;<span style="color: rgba(0, 0, 0, 1)">limit,与使用时的顺序无关
      db.collection.find({}).sort().skip().limit()
      db.collection.find({}).limit().sort().skip()
      db.collection.find({}).skip().sort().limit()</span></pre>
</div>
<pre>&nbsp;<span style="font-size: 14pt"><strong><span style="color: rgba(255, 0, 0, 1)">改:</span></strong></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</pre>
<div class="cnblogs_code">
<pre>(1)update_one()----<span style="color: rgba(0, 0, 0, 1)">修改查询结果的第一条数据
    db.colleciton.update_one({查询条件},{$修改器:{修改值}})
(</span>2)update_many()----<span style="color: rgba(0, 0, 0, 1)">修改查询结果所有数据
    db.colleciton.update_many({查询条件},{$修改器:{修改值}})</span></pre>
</div>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <strong>&nbsp; </strong><span style="font-size: 14pt"><strong><span style="color: rgba(0, 255, 0, 1)">&nbsp;`$`</span></strong><span style="color: rgba(0, 255, 0, 1)"><strong>修改器及`$`特殊用法:</strong>&nbsp; </span>&nbsp; &nbsp;</span> &nbsp; &nbsp; &nbsp; &nbsp;</p>
<div class="cnblogs_code">
<pre>(1)$set----<span style="color: rgba(0, 0, 0, 1)">修改某个字段的值
      db.colleciton.update_one({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">c</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">'</span>:20},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$set</span><span style="color: rgba(128, 0, 0, 1)">'</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">swim,dump</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">sing</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">]}})
(</span>2)$unset---<span style="color: rgba(0, 0, 0, 1)">删除字段
      db.colleciton.update_one({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$and</span><span style="color: rgba(128, 0, 0, 1)">'</span>:[{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">c</span><span style="color: rgba(128, 0, 0, 1)">'</span>},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">'</span>:20}]},{<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$unset</span><span style="color: rgba(128, 0, 0, 1)">"</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:}})
(</span>3)$inc----<span style="color: rgba(0, 0, 0, 1)">引用增加(先引用 后增加)
      db.colleciton.update_many({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">'</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$in</span><span style="color: rgba(128, 0, 0, 1)">'</span>:[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">d</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">e</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">f</span><span style="color: rgba(128, 0, 0, 1)">'</span>]}},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$inc</span><span style="color: rgba(128, 0, 0, 1)">'</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">'</span>:2<span style="color: rgba(0, 0, 0, 1)">}})
(</span>4<span style="color: rgba(0, 0, 0, 1)">)针对数组操作:
    ①$push</span>----<span style="color: rgba(0, 0, 0, 1)">在Array的最后一个位置中增加一个数据
      db.colleciton.update_one({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">b</span><span style="color: rgba(128, 0, 0, 1)">'</span>},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$push</span><span style="color: rgba(128, 0, 0, 1)">'</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">swim</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">sing</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">]}})
    ②$pushAll</span>----<span style="color: rgba(0, 0, 0, 1)">在Array的最后一个位置中增加多个数据
      mycol.update({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">c</span><span style="color: rgba(128, 0, 0, 1)">'</span>},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$pushAll</span><span style="color: rgba(128, 0, 0, 1)">'</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">sing</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">scrapy</span><span style="color: rgba(128, 0, 0, 1)">'</span>]}})<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">实际测试无法使用,报错:Unknown modifier: $pushAll</span>
    ③$pull ----<span style="color: rgba(0, 0, 0, 1)">删除Array中的指定单个元素
      .update_one({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">run</span><span style="color: rgba(128, 0, 0, 1)">'</span>},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$pull</span><span style="color: rgba(128, 0, 0, 1)">'</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">eat</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}})
    ④$pullAll </span>----<span style="color: rgba(0, 0, 0, 1)">删除Array中的指定多个元素
      mycol.update_many({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">b</span><span style="color: rgba(128, 0, 0, 1)">'</span>},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$pullAll</span><span style="color: rgba(128, 0, 0, 1)">'</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:[<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">swim</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">play</span><span style="color: rgba(128, 0, 0, 1)">'</span>]}})<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">实际测试每次只删除一个元素</span>
    ⑤$pop----<span style="color: rgba(0, 0, 0, 1)">删除Array中的第一个或者最后一个元素 正数是倒序删除 负数是正序删除
      db.colleciton.update_many({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">run</span><span style="color: rgba(128, 0, 0, 1)">'</span>},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$pop</span><span style="color: rgba(128, 0, 0, 1)">'</span>:{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:1<span style="color: rgba(0, 0, 0, 1)">}})
    ⑥$</span>----<span style="color: rgba(0, 0, 0, 1)">存储当前(Array)符合条件的元素下标索引 ,只能存储最外层的 索引位置
      db.colleciton.update_many({</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hobby</span><span style="color: rgba(128, 0, 0, 1)">'</span>:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">run</span><span style="color: rgba(128, 0, 0, 1)">'</span>},{<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">$set:{</span><span style="color: rgba(128, 0, 0, 1)">'</span>hobby.$<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">:</span><span style="color: rgba(128, 0, 0, 1)">'</span>swim<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">}})</span></pre>
</div>
<p>&nbsp; &nbsp; &nbsp; <span style="font-size: 14pt">&nbsp;<strong><span style="color: rgba(255, 0, 0, 1)"> 删:</span></strong></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<div class="cnblogs_code">
<pre>(1)delete_one()----<span style="color: rgba(0, 0, 0, 1)">删除查询结果的第一条数据
    db.colleciton.delete_one(查询条件)
(</span>2)delete_many()----<span style="color: rgba(0, 0, 0, 1)">删除查询结果的所有数据
    db.colleciton.delete_many(查询条件)</span></pre>
</div>
<p>&nbsp;相关资料学习: </p>
<pre>菜鸟教程:https://www.runoob.com/python3/python-mongodb.html</pre><br><br>
来源:https://www.cnblogs.com/open-yang/p/11205369.html
頁: [1]
查看完整版本: Python操作MongoDB