伟强 發表於 2019-7-18 10:00:00

MongoDB学习【四】—pymongo操作mongodb数据库

<h1 class="md-end-block md-heading"><span class="md-plain md-expand">一、pymongodb的安装</span></h1>
<p class="md-end-block md-p"><span class="md-plain">Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接。</span></p>
<h4 class="md-end-block md-heading"><span class="md-plain">pip安装</span></h4>
<p class="md-end-block md-p"><span class="md-plain">pip 是一个通用的 Python 包管理工具,提供了对 Python 包的查找、下载、安装、卸载的功能。</span></p>
<p class="md-end-block md-p"><span class="md-plain">安装 pymongo</span></p>
<div class="cnblogs_code">
<pre>python3 -<span style="color: rgba(0, 0, 0, 1)">m pip3 install pymongo
python3 </span>-m pip3 install pymongo==3.5.1<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 指定版本安装</span></pre>
</div>
<h1 class="md-end-block md-heading"><span class="md-plain">二、pymongodb操作mongodb数据库</span></h1>
<h2 class="md-end-block md-heading"><span class="md-plain">1.连接数据库</span></h2>
<p class="md-end-block md-p"><span class="md-plain">通过pymongo连接mongodb数据库</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
client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
dblist </span>= client.database_names()<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 显示服务器上的所有数据库</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> 新版本写法</span>
dblist =<span style="color: rgba(0, 0, 0, 1)"> client.list_database_names()

db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</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><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> print(db)# 数据库操作对象</span></pre>
</div>
<h2 class="md-end-block md-heading"><span class="md-plain">2.文档的增加</span></h2>
<p class="md-end-block md-p"><span class="md-plain">集合中插入文档使用 <span><strong>insert_one()</strong><span class="md-plain"> 方法,该方法的第一参数是字典 <span><strong>name =&gt; value</strong><span class="md-plain"> 对。</span></span></span></span></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

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</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><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> print(db)# 数据库操作对象</span>
<span style="color: rgba(0, 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(128, 0, 0, 1)">"""</span>
<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 增加单条</span>
mydict = {<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)">ryxiong</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>:99<span style="color: rgba(0, 0, 0, 1)">}
res </span>=<span style="color: rgba(0, 0, 0, 1)"> db.stu.insert_one(mydict)
</span><span style="color: rgba(0, 0, 255, 1)">print</span>(res.inserted_id)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 5d2ed8f865d6b8f1c494ff78 ObjectId对象,不是字符串</span>
<span style="color: rgba(0, 0, 0, 1)">​
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 增加多条</span>
mylist = [{<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)">black</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)">white</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">}]
res </span>=<span style="color: rgba(0, 0, 0, 1)"> db.stu.insert_many(mylist)
</span><span style="color: rgba(0, 0, 255, 1)">print</span>(res.inserted_ids)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> </span></pre>
</div>
<h2 class="md-end-block md-heading"><span class="md-plain">3.查询文档</span></h2>
<p class="md-end-block md-p"><span class="md-plain">MongoDB 中使用了 find 和 find_one 方法来查询集合中的数据,它类似于 SQL 中的 SELECT 语句。</span></p>
<h4 class="md-end-block md-heading"><span class="md-plain">查询一条数据</span></h4>
<p class="md-end-block md-p"><span class="md-plain">我们可以使用 <span><strong>find_one()</strong><span class="md-plain"> 方法来查询集合中的一条数据。</span></span></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
</span><span style="color: rgba(0, 0, 255, 1)">from</span> bson <span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> ObjectId

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</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>
<span style="color: rgba(0, 0, 0, 1)">​
res1 </span>= db.stu.find_one({<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)">ryxiong</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">})
res2 </span>= db.stu.find_one({<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span>: ObjectId(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">5d2f0a052a8ee222edddb297</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)"> 将字符串的ObjectID转为对象后查询</span></pre>
</div>
<h4 class="md-end-block md-heading"><span class="md-plain">查询集合中的所有数据或多条</span></h4>
<p class="md-end-block md-p"><span><strong>find()</strong><span class="md-plain"> 方法可以查询集合中的所有数据,类似 SQL 中的 <span><strong><span class="md-plain">SELECT <span>*</span></span></strong><span class="md-plain"> 操作。</span></span></span></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
</span><span style="color: rgba(0, 0, 255, 1)">from</span> bson <span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> ObjectId

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</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>
<span style="color: rgba(0, 0, 0, 1)">​
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查询多个</span>
res3 = db.stu.find({})<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查询所有记录</span>
res4 = db.stu.find({<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)">ryxiong</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>
<h4 class="md-end-block md-heading"><span class="md-plain">高级查询</span></h4>
<p class="md-end-block md-p"><span class="md-plain">查询的条件语句中,我们还可以使用修饰符。</span></p>
<p class="md-end-block md-p"><span class="md-plain">以下实例用于读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据,大于的修饰符条件为 <span><strong>{"$gt": "H"}</strong></span></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

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</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>
<span style="color: rgba(0, 0, 0, 1)">​
myquery </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)">$gt</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)">H</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> } }
res </span>= mycol.find(myquery)</pre>
</div>
<h4 class="md-end-block md-heading"><span class="md-plain">正则表达式查询</span></h4>
<p class="md-end-block md-p"><span class="md-plain">我们还可以使用正则表达式作为修饰符。</span></p>
<p class="md-end-block md-p"><span class="md-plain">正则表达式修饰符只用于搜索字符串的字段。</span></p>
<p class="md-end-block md-p"><span class="md-plain">以下实例用于读取 name 字段中第一个字母为 "R" 的数据,正则表达式修饰符条件为 <span><strong>{"$regex": "^R"}</strong></span></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

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</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>
<span style="color: rgba(0, 0, 0, 1)">​
myquery </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)">$regex</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)">^R</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> } }
mydoc </span>=<span style="color: rgba(0, 0, 0, 1)"> mycol.find(myquery)
</span><span style="color: rgba(0, 0, 255, 1)">for</span> x <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> mydoc:
    </span><span style="color: rgba(0, 0, 255, 1)">print</span>(x)</pre>
</div>
<h4 class="md-end-block md-heading"><span class="md-plain">查询结果排序,跳过,截取条数</span></h4>
<p class="md-end-block md-p"><span class="md-plain">如果我们要对查询结果设置指定条数的记录可以使用 <span><strong>limit()</strong><span class="md-plain"> 方法</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">对结果排序通过sort()方法,对结果忽略某些结果用skip</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

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</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>
<span style="color: rgba(0, 0, 0, 1)">​
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 1.查询结果的排序,跳过,和截取</span>
sort_res = list(db.stu.find().sort(<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>, pymongo.DESCENDING))<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查询所有结果,并根据年龄的降序排序</span>
skip_res = list(db.stu.find().skip(2))<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查询所有结果,并过滤掉前两条</span>
limit_res = list(db.stu.find().limit(2))<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查询所有结果,并截取前两条显示</span>
<span style="color: rgba(0, 0, 0, 1)">​
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 2.分页效果</span>
pagination_res = list(db.stu.find().sort(<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>, pymongo.ASCENDING).limit(2).skip(2))</pre>
</div>
<h2 class="md-end-block md-heading"><span class="md-plain">4.修改文档</span></h2>
<p class="md-end-block md-p"><span class="md-plain">在 MongoDB 中使用 <span><strong>update_one()</strong><span class="md-plain"> 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。</span></span></span></p>
<p class="md-end-block md-p"><span class="md-plain">如果查找到的匹配数据多余一条,则只会修改第一条。</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

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</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>
<span style="color: rgba(0, 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(128, 0, 0, 1)">"""</span>
<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 方式一</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> 查询到直接更新设置值</span>
res = db.stu.update_one({<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)">ryxiong</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>:{<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>:222<span style="color: rgba(0, 0, 0, 1)">}})
</span><span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(res.modified_count)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 方式二.1</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> 查到记录,在字典中添加值</span>
res = db.stu.find_one({<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)">ryxiong</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">})
res[</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">gender</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)">male</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
res[</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)">photography</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
res[</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)">ryxiong1</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>
res = db.stu.update_one({<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)">ryxiong</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><span style="color: rgba(0, 0, 0, 1)">:res})
</span><span style="color: rgba(0, 0, 255, 1)">print</span>(res.modified_count)</pre>
</div>
<h2 class="md-end-block md-heading"><span class="md-plain">5.删除数据</span></h2>
<h4 class="md-end-block md-heading"><span class="md-plain">删除单挑</span></h4>
<p class="md-end-block md-p"><span class="md-plain">使用 <span><strong>delete_one()</strong><span class="md-plain"> 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据</span></span></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

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]

del_res1 </span>= db.stu.delete_one({<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)">ryxiong</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>
<span style="color: rgba(0, 0, 255, 1)">print</span>(del_res1.deleted_count)</pre>
</div>
<h4 class="md-end-block md-heading"><span class="md-plain">删除多条</span></h4>
<p class="md-end-block md-p"><span class="md-plain">使用 <span><strong>delete_many()</strong><span class="md-plain"> 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。</span></span></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

client </span>= pymongo.MongoClient(<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>, 27017<span style="color: rgba(0, 0, 0, 1)">)
db </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">practice</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]

query </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)">$regex</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(0, 0, 0, 1)">} }
del_res </span>= db.stu.delete_many(myquery)<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 删除满足条件的多条</span>
<span style="color: rgba(0, 0, 255, 1)">print</span><span style="color: rgba(0, 0, 0, 1)">(del_res.deleted_count)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 删除所有</span>
del_res = db.stu.delete_many({})</pre>
</div>
<p class="md-end-block md-p">&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    衣带渐宽终不悔,为伊消得人憔悴!<br><br>
来源:https://www.cnblogs.com/ryxiong-blog/p/11205303.html
頁: [1]
查看完整版本: MongoDB学习【四】—pymongo操作mongodb数据库