均均有礼 發表於 2019-9-14 19:09:00

mongodb学习总结

<p style="text-align: center"><strong><span style="font-size: 16px">mongodb学习总结</span></strong></p>
<p><strong>一丶什么是MongoDB</strong></p>
<p>  MongoDB是一个基于分布式文件存储的数据库, 由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个结余关系数据库和非关系数据库之间的产品, 是非关系数据库当中功能最丰富,最像关系数据库的.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>&nbsp;二丶MongoDB的基本概念</strong></p>
<p>  MongoDB将数据存储为一个文档, 数据结构由键值(key=&gt;value)对组成.</p>
<p>  MongoDB文档类似于JSON对象. 字段值可以包含其他文档, 数组及文档数组.</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
    </span>"name":"timfruit"<span style="color: rgba(0, 0, 0, 1)">,
    </span>"age": 24<span style="color: rgba(0, 0, 0, 1)">,
    </span>"hobby":["pingpong", "note"<span style="color: rgba(0, 0, 0, 1)">]
}</span></pre>
</div>
<p>&nbsp;</p>
<p>  MongoDB中的基本概念是文档丶集合丶数据库.</p>
<p>  MongoDB是面向文档的数据库, MongoDB中的文档相当于Mysql表中的一行数据, MongoDB中的文档是保存在集合中的, 向集合中插进一份文档, 相当于向MySql表中插入一行数据, 也就是说MongoDB中的集合类似于Mysql中的表.Mongodb的集合是保存在数据库中的, 在MongoDB的数据库中创建一个集合, 相当于在Mysql中database中创建一个</p>
<p>&nbsp;  <img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190913215657943-1770098639.png"></p>
<p>&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190913215815258-1241136122.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>三丶mongodb的基本操作(CRUD)</strong></p>
<p>  请先自行安装mongodb</p>
<p>  在linux安装mongodb</p>
<p>  在windows安装mongodb  </p>
<p>&nbsp;</p>
<p>  -- 运行mongod服务</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190913222836102-1525173181.png"></p>
<p>&nbsp;</p>
<p>  -- 运行mongo客户端(可与服务进行交互)</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190913223113616-523453028.png"></p>
<p>&nbsp;  mongo客户端的一些参数用法:</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190913225752542-1016230620.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;  3.1)查看数据库</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914094437590-1267815553.png"></p>
<p>&nbsp;</p>
<p>&nbsp;  show dbs 查看所有数据库</p>
<p>  db&nbsp; 查看正在使用的数据库</p>
<p>&nbsp;</p>
<p>  3.2) 创建MongoDB数据库</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914100049485-742444622.png"></p>
<p>  use &lt;database&gt; 并没有真正创建数据库, 而是插入了一些数据之后, 才会创建数据库和集合</p>
<p>&nbsp;</p>
<p>  3.3) 插入文档</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.insertOne(
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">canvas</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">100</span>, tags: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cotton</span><span style="color: rgba(128, 0, 0, 1)">"</span>], size: { h: <span style="color: rgba(128, 0, 128, 1)">28</span>, w: <span style="color: rgba(128, 0, 128, 1)">35.5</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> } }
)</span></pre>
</div>
<p>  查看结果</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914105430881-1227664902.png"></p>
<p>&nbsp;</p>
<p>  插入多份文档</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.insertMany([
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">journal</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">25</span>, tags: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">blank</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)">red</span><span style="color: rgba(128, 0, 0, 1)">"</span>], size: { h: <span style="color: rgba(128, 0, 128, 1)">14</span>, w: <span style="color: rgba(128, 0, 128, 1)">21</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> } },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mat</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">85</span>, tags: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">gray</span><span style="color: rgba(128, 0, 0, 1)">"</span>], size: { h: <span style="color: rgba(128, 0, 128, 1)">27.9</span>, w: <span style="color: rgba(128, 0, 128, 1)">35.5</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> } },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mousepad</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">25</span>, tags: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">gel</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)">blue</span><span style="color: rgba(128, 0, 0, 1)">"</span>], size: { h: <span style="color: rgba(128, 0, 128, 1)">19</span>, w: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> } }
])</span></pre>
</div>
<p>  <span class="reference internal"><code class="xref mongodb mongodb-method docutils literal"><span class="pre">db.collection.insert()插入一份或者多份文档</span></code></span></p>
<p>&nbsp;</p>
<p>  3.4) 查询文档</p>
<p>&nbsp;  准备数据</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.insertMany([
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">journal</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">25</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">14</span>, w: <span style="color: rgba(128, 0, 128, 1)">21</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">notebook</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">50</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">8.5</span>, w: <span style="color: rgba(128, 0, 128, 1)">11</span>, uom: <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> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">paper</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">100</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">8.5</span>, w: <span style="color: rgba(128, 0, 128, 1)">11</span>, uom: <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> }, status: <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(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">planner</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">75</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, w: <span style="color: rgba(128, 0, 128, 1)">30</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <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(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">postcard</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">45</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">10</span>, w: <span style="color: rgba(128, 0, 128, 1)">15.25</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> }
]);</span></pre>
</div>
<p>&nbsp;</p>
<p>  a) 查询所有数据</p>
<div class="cnblogs_code">
<pre>db.inventory.find( {} )</pre>
</div>
<p>  相当于sql</p>
<div class="cnblogs_code">
<pre>SELECT * FROM inventory</pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>  b) 精确的等值查询</p>
<p>  精确的等值条件可以使用{&lt;field1&gt;: &lt;value1&gt;, ... }</p>
<div class="cnblogs_code">
<pre>db.inventory.find( { status: <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> } )</pre>
</div>
<p>  相当于SQL</p>
<div class="cnblogs_code">
<pre>SELECT * FROM inventory WHERE status = <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></pre>
</div>
<p>&nbsp;</p>
<p>  查询过滤器, 即查询条件的写法形式, 等值形式, &lt;field&gt;:&lt;value&gt;, 条件查询里的操作符形式 &lt;field&gt;: {&lt;operator&gt;: &lt;value&gt;}</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914112026962-1589706903.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>  c)使用操作符进行条件查询</p>
<p>  条件查询操作符形式:&nbsp;<span class="p">{ <span class="o">&lt;<span class="nx">field1<span class="o">&gt;: <span class="p">{ <span class="o">&lt;<span class="nx">operator1<span class="o">&gt;: <span class="o">&lt;<span class="nx">value1<span class="o">&gt; <span class="p">}, <span class="p">... <span class="p">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<div class="cnblogs_code">
<pre>db.inventory.find( { status: { $<span style="color: rgba(0, 0, 255, 1)">in</span>: [ <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</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> ] } } )</pre>
</div>
<p>  相当于SQL</p>
<div class="cnblogs_code">
<pre>SELECT * FROM inventory WHERE status <span style="color: rgba(0, 0, 255, 1)">in</span> (<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</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>)</pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>  d) 精准 AND 条件&nbsp; 查询</p>
<p>  查询inventory集合中status="A" 而且 qty&lt;30的文档:</p>
<div class="cnblogs_code">
<pre>db.inventory.find( { status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: { $lt: <span style="color: rgba(128, 0, 128, 1)">30</span> } } )</pre>
</div>
<p>  相当于SQL</p>
<div class="cnblogs_code">
<pre>SELECT * FROM inventory WHERE status = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span> AND qty &lt; <span style="color: rgba(128, 0, 128, 1)">30</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;  e)精准 OR 条件 查询</p>
<p>&nbsp;  {<span style="color: rgba(255, 0, 0, 1)">$or: [&nbsp;&nbsp;</span> {&lt;field&gt;:&lt;value&gt;, &lt;field&gt;:{&lt;operator&gt;: &lt;value&gt;}}&nbsp;<span style="color: rgba(255, 0, 0, 1)"> ]&nbsp;</span>&nbsp;&nbsp; }</p>
<p>&nbsp;  查询inventory中status="A" 或者 qty&lt;30的文档</p>
<div class="cnblogs_code">
<pre>db.inventory.find( { $or: [ { status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, { qty: { $lt: <span style="color: rgba(128, 0, 128, 1)">30</span> } } ] } )</pre>
</div>
<p>&nbsp;  相当于SQL</p>
<div class="cnblogs_code">
<pre>SELECT * FROM inventory WHERE status = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span> OR qty &lt; <span style="color: rgba(128, 0, 128, 1)">30</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>  f) AND , OR 混合查询</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.find( {
   status: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
   $or: [ { qty: { $lt: </span><span style="color: rgba(128, 0, 128, 1)">30</span> } }, { item: /^p/<span style="color: rgba(0, 0, 0, 1)"> } ]
} )</span></pre>
</div>
<p>&nbsp;  相当于SQL</p>
<div class="cnblogs_code">
<pre>SELECT * FROM inventory WHERE status = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span> AND ( qty &lt; <span style="color: rgba(128, 0, 128, 1)">30</span> OR item LIKE <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p%</span><span style="color: rgba(128, 0, 0, 1)">"</span>)</pre>
</div>
<p>&nbsp;</p>
<p>  一些常用的操作符</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914111609423-1459134832.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914111656579-372127511.png"></p>
<p>&nbsp;</p>
<p>  g) 投影, 指定返回值</p>
<div class="cnblogs_code">
<pre>db.inventory.find( { status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, { item: <span style="color: rgba(128, 0, 128, 1)">1</span>, status: <span style="color: rgba(128, 0, 128, 1)">1</span> } )</pre>
</div>
<p>  相当于SQL:</p>
<div class="cnblogs_code">
<pre>SELECT _id, item, status <span style="color: rgba(0, 0, 255, 1)">from</span> inventory WHERE status = <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;  3.5)更新修改文档</p>
<p>&nbsp;  准备数据</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.insertMany( [
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">canvas</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">100</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">28</span>, w: <span style="color: rgba(128, 0, 128, 1)">35.5</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">journal</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">25</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">14</span>, w: <span style="color: rgba(128, 0, 128, 1)">21</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mat</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">85</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">27.9</span>, w: <span style="color: rgba(128, 0, 128, 1)">35.5</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mousepad</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">25</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">19</span>, w: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">P</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">notebook</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">50</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">8.5</span>, w: <span style="color: rgba(128, 0, 128, 1)">11</span>, uom: <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> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">P</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">paper</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">100</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">8.5</span>, w: <span style="color: rgba(128, 0, 128, 1)">11</span>, uom: <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> }, status: <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(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">planner</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">75</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, w: <span style="color: rgba(128, 0, 128, 1)">30</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <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(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">postcard</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">45</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">10</span>, w: <span style="color: rgba(128, 0, 128, 1)">15.25</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sketchbook</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">80</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">14</span>, w: <span style="color: rgba(128, 0, 128, 1)">21</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sketch pad</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">95</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, w: <span style="color: rgba(128, 0, 128, 1)">30.5</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> }
] );</span></pre>
</div>
<p>&nbsp;</p>
<p>  a) 在一个集合里更新文档</p>
<p>  <code class="xref mongodb mongodb-method docutils literal"><span class="pre">db.collection.update()</span></code></p>
<p><span class="pre">  <code class="xref mongodb mongodb-method docutils literal"><span class="pre">db.collection.findAndModify()</span></code></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
</span>&lt;update <span style="color: rgba(0, 0, 255, 1)">operator</span>&gt;: { &lt;field1&gt;: &lt;value1&gt;<span style="color: rgba(0, 0, 0, 1)">, ... },
</span>&lt;update <span style="color: rgba(0, 0, 255, 1)">operator</span>&gt;: { &lt;field2&gt;: &lt;value2&gt;<span style="color: rgba(0, 0, 0, 1)">, ... },
...
}</span></pre>
</div>
<p>&nbsp;</p>
<p>  更新文档的常用操作符</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914131703638-210250821.png"></p>
<p>&nbsp;</p>
<p>&nbsp;  将item属性为paper的文档 中的"com.uom"属性设置为"cm", "status"属性设置为"P",&nbsp; 添加lastModified属性的字段, 并设置为$currentDate当前时间.</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.updateOne(
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">paper</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   {
   $</span><span style="color: rgba(0, 0, 255, 1)">set</span>: { <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">size.uom</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)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span>, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">P</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   $currentDate: { lastModified: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)"> }
   }
)</span></pre>
</div>
<p>&nbsp;  </p>
<p>  修改的结果为:</p>
<p>&nbsp;<img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914132853578-967414115.png"></p>
<p>&nbsp;</p>
<p>  b) 在一个集合里修改多份文档</p>
<p>  将所有qty&lt;50的文档, 修改对应值, 增加修改时间字段</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.updateMany(
   { </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">qty</span><span style="color: rgba(128, 0, 0, 1)">"</span>: { $lt: <span style="color: rgba(128, 0, 128, 1)">50</span><span style="color: rgba(0, 0, 0, 1)"> } },
   {
   $</span><span style="color: rgba(0, 0, 255, 1)">set</span>: { <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">size.uom</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>, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">P</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   $currentDate: { lastModified: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)"> }
   }
)</span></pre>
</div>
<p>&nbsp;</p>
<p>  c) 替换文档</p>
<p>  将item为paper的文档, 替换成指定文档.</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.replaceOne(
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">paper</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">paper</span><span style="color: rgba(128, 0, 0, 1)">"</span>, instock: [ { warehouse: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">60</span> }, { warehouse: <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>, qty: <span style="color: rgba(128, 0, 128, 1)">40</span><span style="color: rgba(0, 0, 0, 1)"> } ] }
)</span></pre>
</div>
<p>&nbsp;  </p>
<p>  修改之前:</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914133815770-409043491.png"></p>
<p>&nbsp;</p>
<p>  修改之后:</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914133908396-748213074.png"></p>
<p>&nbsp;</p>
<p>&nbsp;  d)修改字段名:</p>
<p>  <span class="p">{<span class="nx">$rename<span class="o">: <span class="p">{ <span class="o">&lt;<span class="nx">field1<span class="o">&gt;: <span class="o">&lt;<span class="nx">newName1<span class="o">&gt;<span class="p">, <span class="o">&lt;<span class="nx">field2<span class="o">&gt;: <span class="o">&lt;<span class="nx">newName2<span class="o">&gt;<span class="p">, <span class="p">... <span class="p">} <span class="p">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p>&nbsp;</p>
<p><span class="p">  将item为canvas的文档中的"status"属性名 改为 "newstatus"<br></span></p>
<div class="cnblogs_code">
<pre>&nbsp;db.inventory.update({item:"canvas"},{$rename:{"status":"newstatus"}})  </pre>
</div>
<p>  修改结果为:</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914134647861-163379111.png"></p>
<p>&nbsp;</p>
<p>  3.6) 删除文档</p>
<p>  清空之前的数据:&nbsp;&nbsp; db.inventory.remove({})</p>
<p>  准备数据:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.insertMany( [
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">journal</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">25</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">14</span>, w: <span style="color: rgba(128, 0, 128, 1)">21</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">notebook</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">50</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">8.5</span>, w: <span style="color: rgba(128, 0, 128, 1)">11</span>, uom: <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> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">P</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">paper</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">100</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">8.5</span>, w: <span style="color: rgba(128, 0, 128, 1)">11</span>, uom: <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> }, status: <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(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">planner</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">75</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, w: <span style="color: rgba(128, 0, 128, 1)">30</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <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(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">postcard</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">45</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">10</span>, w: <span style="color: rgba(128, 0, 128, 1)">15.25</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
] );</span></pre>
</div>
<p>&nbsp;</p>
<p>  a) 删除匹配的多份文档中的第一份文档</p>
<div class="cnblogs_code">
<pre>db.inventory.deleteOne({status:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span>})</pre>
</div>
<p>&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914141735605-325346467.png"></p>
<p>&nbsp;</p>
<p>  b) 删除匹配的多份文档</p>
<div class="cnblogs_code">
<pre>db.inventory.deleteMany({status:<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>})</pre>
</div>
<p>&nbsp;</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914142819308-606189648.png"></p>
<p>&nbsp;</p>
<p>  c) 删除所有</p>
<div class="cnblogs_code">
<pre>db.inventory.deleteMany({})</pre>
</div>
<p>&nbsp;</p>
<p>  3.7) 批量写</p>
<p>&nbsp;  db.collection.bulkWrite()提供批量插入,更新,删除的操作.MongoDb的批量插入也可以通过db.collection.insertMany()方法.</p>
<p>&nbsp;  bulk wirte操作可以是有序的(ordered), 也可以是无序的(unordered).</p>
<p>   有序执行一系列的操作, MongoDB将会串行执行. 一旦发生一个操作出错, MongoDB将会立即返回.</p>
<p>  无序执行一系列的操作, MongoDB可以并行执行,但行为不能被保证. 如果出错, MongoDB将会继续执行.</p>
<p>  在分片集合中执行一批有序操作, 将会比无序操作更慢, 因为有序操作需要串行等待执行.</p>
<p>&nbsp;</p>
<p>&nbsp;  准备数据:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.insertMany([
    { </span><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> : <span style="color: rgba(128, 0, 128, 1)">1</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">char</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)">Brisbane</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)">class</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)">monk</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)">lvl</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">4</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)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">2</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">char</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)">Eldon</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)">class</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)">alchemist</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)">lvl</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">3</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)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">3</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">char</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)">Meldane</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)">class</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)">ranger</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)">lvl</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)"> }
    ]);</span></pre>
</div>
<p>&nbsp;</p>
<p>  将一系列操作批量执行 :</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.characters.bulkWrite(
      [
         { <strong>insertOne</strong> :
            {
               </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">document</span><span style="color: rgba(128, 0, 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)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">4</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">char</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)">Dithras</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)">class</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)">barbarian</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)">lvl</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">
               }
            }
         },
         { <strong>insertOne</strong> :
            {
               </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">document</span><span style="color: rgba(128, 0, 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)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">5</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">char</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)">Taeln</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)">class</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)">fighter</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)">lvl</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">
               }
            }
         },
         { <strong>updateOne</strong> :
            {
               </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">filter</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)">char</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)">Eldon</span><span style="color: rgba(128, 0, 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)">update</span><span style="color: rgba(128, 0, 0, 1)">"</span> : { $<span style="color: rgba(0, 0, 255, 1)">set</span> : { <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">status</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)">Critical Injury</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> } }
            }
         },
         { <strong>deleteOne</strong> :
            { </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">filter</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)">char</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)">Brisbane</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">} }
         },
         { <strong>replaceOne</strong> :
            {
               </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">filter</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)">char</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)">Meldane</span><span style="color: rgba(128, 0, 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)">replacement</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)">char</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)">Tanys</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)">class</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)">oracle</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)">lvl</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)"> }
            }
         }
      ]
   );</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;  返回结果为:</p>
<div class="cnblogs_code">
<pre><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)">acknowledged</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(0, 0, 255, 1)">true</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)">deletedCount</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">0</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)">insertedCount</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">2</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)">matchedCount</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">0</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)">upsertedCount</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">0</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)">insertedIds</span><span style="color: rgba(128, 0, 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)">0</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">4</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)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">5</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)">upsertedIds</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> : {
      
    }
}</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;  3.7)在配置复制集时的读隔离级别</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1">Read Concern <code class="docutils literal"><span class="pre">"local"</span></code><span class="reference internal"><code class="docutils literal"><span class="pre">&nbsp;&nbsp; 读取本地</span></code></span></li>
<li class="toctree-l1">Read Concern <code class="docutils literal"><span class="pre">"available"</span></code><span class="reference internal"><code class="docutils literal"><span class="pre"> 读取可用的复制集</span></code></span></li>
<li class="toctree-l1">Read Concern <code class="docutils literal"><span class="pre">"majority"</span></code><span class="reference internal"><code class="docutils literal"><span class="pre"> 读取主复制集</span></code></span></li>
<li class="toctree-l1">Read Concern <code class="docutils literal"><span class="pre">"linearizable"</span></code></li>
<li class="toctree-l1">Read Concern <code class="docutils literal"><span class="pre">"snapshot"</span></code></li>
</ul>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>四丶聚合操作</strong></p>
<p>&nbsp;  聚合操作处理多条数据记录和返回计算结果</p>
<p>&nbsp;</p>
<p>  1) 聚合pipeline</p>
<p>&nbsp;  准备数据:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.insertMany( [
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">canvas</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">100</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">28</span>, w: <span style="color: rgba(128, 0, 128, 1)">35.5</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">journal</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">25</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">14</span>, w: <span style="color: rgba(128, 0, 128, 1)">21</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mat</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">85</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">27.9</span>, w: <span style="color: rgba(128, 0, 128, 1)">35.5</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mousepad</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">25</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">19</span>, w: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">P</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">notebook</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">50</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">8.5</span>, w: <span style="color: rgba(128, 0, 128, 1)">11</span>, uom: <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> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">P</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">paper</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">100</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">8.5</span>, w: <span style="color: rgba(128, 0, 128, 1)">11</span>, uom: <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> }, status: <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(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">planner</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">75</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, w: <span style="color: rgba(128, 0, 128, 1)">30</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <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(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">postcard</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">45</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">10</span>, w: <span style="color: rgba(128, 0, 128, 1)">15.25</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sketchbook</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">80</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">14</span>, w: <span style="color: rgba(128, 0, 128, 1)">21</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
   { item: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sketch pad</span><span style="color: rgba(128, 0, 0, 1)">"</span>, qty: <span style="color: rgba(128, 0, 128, 1)">95</span>, size: { h: <span style="color: rgba(128, 0, 128, 1)">22.85</span>, w: <span style="color: rgba(128, 0, 128, 1)">30.5</span>, uom: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">cm</span><span style="color: rgba(128, 0, 0, 1)">"</span> }, status: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> }
] );</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;  使用格式为</p>
<div class="cnblogs_code">
<pre>db.collection.aggregate( [ { &lt;stage&gt; }, ... ] )</pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;  a)使用案例1</p>
<p>  查询所有qty属性值小于100的文档, 并返回所有"qty"的值</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.aggregate([
    {$match:{ </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">qty</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)">$lt</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">100</span><span style="color: rgba(0, 0, 0, 1)">} }},
    {$project: {</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">qty</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">} }
]);</span></pre>
</div>
<p>  $match: 为匹配stage, 值可以是正常的查询语句</p>
<p>  $project: 为投影stage, 值是指定需要返回的属性</p>
<p>  输出结果为:</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914181043671-297045163.png"></p>
<p>&nbsp;</p>
<p>&nbsp;  b) 使用案例2</p>
<p>  对所有"qty"值小于100的文档, 以"status"分组, 并计算"qty"的总数</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.inventory.aggregate([
    {$match:{ </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">qty</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)">$lt</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">100</span><span style="color: rgba(0, 0, 0, 1)">} }},
    {$group: {_id:</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$status</span><span style="color: rgba(128, 0, 0, 1)">"</span>, total: {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$sum</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)">$qty</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">} }}
]);</span></pre>
</div>
<p>&nbsp;</p>
<p>  结果为:</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914182247117-2118682592.png"></p>
<p>&nbsp;</p>
<p>  一些常用聚合stage:</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914182355635-1873873330.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>  2) map-reduce</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914182612156-64744607.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>五丶索引</strong></p>
<p>&nbsp;  mongo的索引和其他数据库的索引类似,用于加快查询.</p>
<p><img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914184114703-1528260557.png"></p>
<p>&nbsp;</p>
<p>&nbsp;  1. 创建索引</p>
<div class="cnblogs_code">
<pre>db.collection.createIndex( &lt;key and index type specification&gt;, &lt;options&gt; )</pre>
</div>
<p>  举例,</p>
<div class="cnblogs_code">
<pre>db.mycol.createIndex( { name: -<span style="color: rgba(128, 0, 128, 1)">1</span> } )</pre>
</div>
<p>  如果集合mycol中的name字段没有一样的索引定义, 将创建该索引</p>
<p>&nbsp;</p>
<p>  2. 索引名字</p>
<p>  使用<code class="docutils literal"><span class="pre">{ <span class="pre">item <span class="pre">: <span class="pre">1, <span class="pre">quantity: <span class="pre">-1 <span class="pre">}语句创建索引, 默认索引名字为<code class="docutils literal"><span class="pre">item_1_quantity_-1</span></code></span></span></span></span></span></span></span></code></p>
<p>&nbsp;  使用如下语句, 可以指定索引名字</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">db.products.createIndex(
{ item: </span><span style="color: rgba(128, 0, 128, 1)">1</span>, quantity: -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> } ,
{ name: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">query for inventory</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> }
)</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;  3. 查看索引</p>
<div class="cnblogs_code">
<pre>db.mycol.getIndexes()</pre>
</div>
<p>&nbsp;</p>
<p>  4. 删除索引</p>
<p>  删除在属性"tx-id"上的索引</p>
<div class="cnblogs_code">
<pre>db.accounts.dropIndex( { <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">tax-id</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 128, 1)">1</span> } )</pre>
</div>
<p>  删除集合的所有索引</p>
<div class="cnblogs_code">
<pre>db.mycol.dropIndexes()</pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;  5. 索引类型</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>&nbsp;六丶Mongodb界面工具</strong></p>
<p>  本人使用nosqlbooster , 因为它跨平台</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1435418/201909/1435418-20190914190001399-1560458225.png"></p>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    人生没有彩排,每一天都是现场直播<br><br>
来源:https://www.cnblogs.com/timfruit/p/11516381.html
頁: [1]
查看完整版本: mongodb学习总结