美君之 發表於 2019-9-1 16:13:00

mongodb数据库

<p><strong><span style="color: rgba(0, 0, 0, 1); background-color: rgba(0, 255, 255, 1)">1. mongodb是什么?</span></strong></p>
<p>NoSQL 非关系型数据库,主要用于数据的海量存储。分为server数据存储端和client数据操作端。</p>
<p>关系型与非关系型数据库的区别?<br>    <br>sql:数据库--表--数据<br>    <br>nosql:数据库---集合--文档    </p>
<p><br><strong><span style="background-color: rgba(0, 255, 255, 1); color: rgba(0, 0, 0, 1)">2.mongoddb优势</span></strong></p>
<p>1. <strong>扩展性</strong><br>2. <strong>大数据型,高性能</strong><br>3. <strong>灵活的数据模型</strong></p>
<p><span style="color: rgba(0, 0, 0, 1)"><strong><span style="background-color: rgba(0, 255, 255, 1)">3.启动</span></strong></span></p>
<p>1. 本地测试启动:功能受限,验证数据库的完整功能</p>
<p>        + ps aux|grep mongodb <br>        + ps -- process 进程<br>        + ps aux 显示所有进程<br>        + grep --- 文件查询<br>        + grep "#" /etc/mongodb.conf --- 把文件中所有带被注释的行显示出来<br>        + grep -v "#" /etc/mongodb.conf --- 把文件中所有有用的行显示出来<br>        <br>        sudo service mongodb start<br>        sudo service mongodb stop</p>
<p>2. 生产方式启动:</p>
<p>&nbsp;</p>
<p><strong><span style="background-color: rgba(0, 255, 255, 1); color: rgba(0, 0, 0, 1)">4.使用</span></strong></p>
<p><span style="color: rgba(51, 153, 102, 1)"><strong>4.1 数据库的操作</strong></span></p>
<p>查看当前数据库: db默认为test</p>
<p>查看磁盘上的数据库: show dbs/ show databases</p>
<p>注:db --- &gt; test ---&gt; show dbs ---&gt; local 0.000GB 是因为test数据库不在磁盘上,在内存中。</p>
<p><strong><span style="color: rgba(51, 153, 102, 1)">4.2. 创建数据库&nbsp;</span></strong>&nbsp;</p>
<p>1.use python</p>
<p>2.db.test.insert({"key":"value"})</p>
<p>3.show dbs ---&gt; python</p>
<p><strong><span style="color: rgba(51, 153, 102, 1)">4.3 删除数据库</span></strong></p>
<p>db.dropDatabase()</p>
<p><strong><span style="color: rgba(51, 153, 102, 1)">4.4 集合的操作</span></strong></p>
<p><strong><span style="color: rgba(51, 153, 102, 1)">  </span></strong><span style="color: rgba(0, 0, 0, 1)">1.选择要使用的数据库&nbsp; use new&nbsp;</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  2.db.createCollection("new_col")&nbsp; </span><span style="color: rgba(255, 0, 0, 1)"><strong>如果new这个数据库存在就在里面创建集合,如果数据库不存在,就先创建数据库new,然后在创建集合</strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>    <span style="color: rgba(51, 153, 102, 1)">默认是无限容量:cap:true</span></strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>  </strong></span><span style="color: rgba(0, 0, 0, 1)">3.show dbs&nbsp;</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901144844352-285448797.png"></span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  4.db.new_col 查看集合&nbsp; <span style="color: rgba(255, 0, 0, 1)"><strong>show.collections&nbsp; 查看指定数据库下的所有集合</strong></span></span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  5.db.new_col.insert({"a":"1"}) 指定集合插入数据</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  6.db.new_col.find() 查看指定集合的数据</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901145522399-238983114.png"></span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  说明:集合会自动插入一条id的字段,是一个十二位的十六进数。</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  前八位:5d6b6ab1是<strong><span style="color: rgba(255, 0, 0, 1)">时间戳</span></strong></span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  接着六位:b48040 <strong><span style="color: rgba(255, 0, 0, 1)">机器码</span></strong>,唯一标记机器</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  接着四位:8ed5 是<strong><span style="color: rgba(255, 0, 0, 1)">进程号</span></strong></span></p>
<p><span style="color: rgba(0, 0, 0, 1)">  最后六位:是简单的<strong><span style="color: rgba(255, 0, 0, 1)">增量值</span></strong></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><strong>4.4 数据的增删改查</strong></span></p>
<p><span style="color: rgba(51, 153, 102, 1)">  <span style="color: rgba(0, 0, 0, 1)">批量</span><span style="color: rgba(255, 0, 0, 1)"><strong>插入数据</strong></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  [{&nbsp; &nbsp;} , {&nbsp; &nbsp;} , {&nbsp; &nbsp;}]</span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  db.new_col.insert([{name:"zhang",age:10,class:1},{name:"wang",age:11,class:1},{name:"sun",age:12,class:1}])</span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901152212176-44252165.png"></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  <strong><span style="color: rgba(255, 0, 0, 1)">修改数据</span></strong> ---&nbsp;<strong><span style="color: rgba(255, 0, 0, 1)">修改数据的依据是通过 "_id"的值取找,找到了之后,在id后面的字段判断值是否一致,不一致,把新的值覆盖原来的值。</span></strong></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(255, 0, 0, 1)">  </span><span style="color: rgba(0, 0, 0, 1)">db.new_col.save({"_id" : ObjectId("5d6b717506777816389cdd77"),"name":"mongo","age":100,"class":100})</span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901153201890-1775380848.png"></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  如果:<strong><span style="color: rgba(255, 0, 0, 1)">通过id值找不到,就会将后面的值作为新地值插入,id的值为查找的id的值。</span></strong><br></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)"><strong><span style="color: rgba(255, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190903183533829-2045036369.png"></span></strong></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(255, 0, 0, 1)">  <strong>查询数据</strong></span><br></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(255, 0, 0, 1)">  <span style="color: rgba(0, 0, 0, 1)">一般查询:db.new_col.find()<strong><br></strong></span></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">  条件查询:</span></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">  # 新插入一组数,进行演示。<br></span></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901155243723-892580363.png"></span></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">  db.demo_col.findOne()</span></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(255, 0, 0, 1)"><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901155400646-772942775.png"></span></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  db.demo_col.find().pretty()&nbsp; &nbsp; &nbsp; 展示部分截图</span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901155525459-2014914163.png"></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  <span style="color: rgba(255, 0, 0, 1)"><strong>1. 等于查询</strong></span></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  db.demo_col.find({age:10})</span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901155813642-882139342.png"></span></span></p>
<p>  <span style="color: rgba(255, 0, 0, 1)"><strong>2. 大于查询</strong></span></p>
<p>  db.demo_col.find({age:{$gt:50}})&nbsp; &nbsp; &nbsp; &nbsp;$get 大于等于&nbsp; &nbsp;$lt&nbsp; 小于&nbsp; $lte小于等于</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901160046464-1233971686.png"></p>
<p>  <span style="color: rgba(255, 0, 0, 1)"><strong>4. 不等于查询</strong></span></p>
<p>  db.demo_col.find({age:{$ne:50}})</p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)"> <span style="color: rgba(255, 0, 0, 1)"><strong> 5. and查询</strong></span></span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  db.demo_col.find({$and:[{area:{$gte:100}},{age:{$ne:110}}]})&nbsp; &nbsp; &nbsp; 多条件查询 find( $and :&nbsp; [&nbsp; {&nbsp; 查询条件1 } , { 查询条件2&nbsp; }&nbsp; ])</span></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><span style="color: rgba(0, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190901161239037-1007998533.png"></span></span></p>
<p>&nbsp; <span style="color: rgba(255, 0, 0, 1)"><strong> 6. or 查询</strong></span></p>
<p>  db.demo_col.find( { $or : [ { area : {&nbsp; $lte: 100}&nbsp; },{ age : { $gte : 50} } ] } )&nbsp; &nbsp;&nbsp;多条件查询 find( $ or :&nbsp; [&nbsp; {&nbsp; 查询条件1 } , { 查询条件2&nbsp; }&nbsp; ])</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902150819064-1530307170.png"></p>
<p>  <span style="color: rgba(255, 0, 0, 1)"><strong>7. 范围运算符&nbsp; in&nbsp; &nbsp;nin&nbsp;</strong></span></p>
<p>  db.demo_col.find({age:{$in:}})</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902151314218-431263229.png"></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>  8.模糊正则查询</strong></span></p>
<p>  db.demo_col.find({name:{regex:"^湖"}})</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902152045165-627021996.png"></p>
<p>  <span style="color: rgba(255, 0, 0, 1)"><strong>9.复杂查询-自定义查询</strong></span></p>
<p>  db.demo_col.find({$where:function(){return this.age&gt; 100 }})</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902152618399-2100828367.png"></p>
<p> <span style="color: rgba(255, 0, 0, 1)"><strong> 10 查询结果的操作</strong></span></p>
<p>  limit(5)&nbsp;</p>
<p>  db.demo_col.find().limit(5)</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902152944718-1233987206.png"></p>
<p>  skip(3)&nbsp;&nbsp;</p>
<p>  db.demo_col.find().skip(3)</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902153319696-518938013.png"></p>
<p>  <strong><span style="color: rgba(255, 0, 0, 1)">投影操作</span></strong></p>
<p>  显示指定的字段的查询结果,类似于mysql中的显示部分字段的查询结果</p>
<p>  select&nbsp; *&nbsp; from&nbsp; demo_table;</p>
<p>  select&nbsp; name,age&nbsp; from demo_table;</p>
<p>  db.demo_col.find({},{name:1})&nbsp; 显示一个字段&nbsp; &nbsp;db.demo_col.find({},{name:1,age:1})&nbsp; 显示多个字段&nbsp;&nbsp;</p>
<p>  # 1 代表显示 0 代表不显示&nbsp; 字段设置不能0,1共存,但是_id:0,name:1&nbsp; id为0可以和其他字段的1共存</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902153914641-226694835.png"></p>
<p>  <strong><span style="color: rgba(255, 0, 0, 1)">排序操作</span></strong></p>
<p>  db.demo_col.find().sort({area:-1})</p>
<p>  1代表升序,-1代表降序</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902154811516-870538892.png"></p>
<p>  <strong><span style="color: rgba(255, 0, 0, 1)">统计操作</span></strong></p>
<p>  db.demo_col.find().count()</p>
<p>  db.demo_col.count({age:{$gte:100}})&nbsp;&nbsp;</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902155302429-359335675.png"></p>
<p>  <strong><span style="color: rgba(255, 0, 0, 1)">去重操作</span></strong></p>
<p>  db.demo_col.distinct("age")&nbsp;</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902161250323-420270841.png"></p>
<p>  <span style="color: rgba(255, 0, 0, 1)"><strong>更新操作</strong></span></p>
<p>  全文档覆盖更新</p>
<p>  db.demo_col.updata({查询条件},{更新条件})</p>
<p>  db.demo_col.update({"area":100},{"name":"美丽的大新疆"})&nbsp; &nbsp; 更新后只保留原来数据的_id 和 name字段,其他字段都会变没有 -----<span style="color: rgba(255, 0, 0, 1)"><strong>覆盖更新</strong></span></p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190902164936119-1120869059.png"></p>
<p>  db.test_col.update({"name":"陕西"},{$set:{"city":"长安"}})&nbsp; &nbsp;---- <strong><span style="color: rgba(255, 0, 0, 1)">不覆盖更新</span></strong></p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190903184520892-1609613421.png"></p>
<p>  db.test_col.update({},{$set:{"nation":"中国"}},{multi:true})&nbsp; 全部追加</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190903185138376-154624513.png"></p>
<p>  db.test_col.update({"name":"福建"},{$set:{"city":"福州","location":"华东","nickname":"闽","nation":"中国"}},{upsert:true})找到就更新,找不到就添加</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190903190342328-987788469.png"></p>
<p>  但是:这个nation和nickname的位置,看着好难受</p>
<p>  <strong><span style="color: rgba(255, 0, 0, 1)">删除数据</span></strong></p>
<p>  db.test_col.remove({"name":"福建"},{justOne:true})</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190903190851500-802446403.png"></p>
<p>  <strong><span style="color: rgba(51, 153, 102, 1)">mongodb 的聚合操作</span></strong></p>
<p>    聚合是基于数据处理的聚合管道,每个文档通过一个由多阶段组成的管道,可以对每个阶段的管道进行分组,过滤等功能,然后精活一系列的处理,输出相应的结果。第一个管道产生的结果,会变成第二个管道的输入值,加入第一个管道进行了投影,那么第二个管道只能拿到部分数据。</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190904152537286-1144412745.png"></p>
<p>    db.集合名称.aggregate({管道:{表达式}})</p>
<p>    管道命令之$group:是聚合命令中使用最多的一个命令,用来将集合中的文档进行分组,可用于统计结果。    </p>
<p>    db.test_col.aggregate({$group:{_id:"$nation"}})</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190904154008603-639824632.png"></p>
<p>  db.test_col.aggregate({$group:{_id:"$nation",counter:{$sum:1}}})</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190904154325064-2041068943.png"></p>
<p>  新建一组集合数据,用来练习group</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190904162821422-1227054212.png"></p>
<p>    管道命令之$match:用于数据过滤</p>
<p>      db.test_info.aggregate({$match:{class:"two"}})</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190904163439125-149146679.png"></p>
<p>      db.test_info.aggregate({$match:{class:"one"}},{$group:{_id:"$gender",name_list:{$push:"$name"}}})</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190904163851351-2000856739.png"></p>
<p>      db.test_info.aggregate({$match:{name:/z/}})&nbsp; &nbsp;<span style="color: rgba(255, 0, 0, 1)"><strong>模糊匹配高级搜索</strong></span></p>
<p>&nbsp; <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190904164246363-352890452.png"></p>
<p>      # TODO</p>
<p>  mongodb 索引</p>
<p>  不创建索引,就会遍历每个数据,进行比较,若刚好要查的数据位于最会一个,则查询速度最慢。</p>
<p>  索引:升序创建,降序创建</p>
<p>  <span style="color: rgba(255, 0, 0, 1)"><strong>索引加快搜索速度的原理:二分查找结合二叉树</strong></span></p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190907204250613-1139188315.png"></p>
<p>  查找7,排序前,需要11次比较。</p>
<p>  排序后,将数据按照二叉树的方式进行存储,查找7,需要3次比较。</p>
<p>  mongodb创建索引的目的:1. 加快数据查询速度,2.进行数据去重(唯一索引进行去重)</p>
<p>  db.集合名.ensureIndex({属性:1})&nbsp; , 1升序,-1降序</p>
<p>  <strong><span style="color: rgba(255, 0, 0, 1)">插入10万条数据:</span></strong>for(i=0;i&lt;100000;i++){db.num.insert({name:"name"+i,num:i})}</p>
<p>  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190907205538613-75280199.png"></p>
<p>  db.test_num.find({num:99999}).explain("executionStats")&nbsp; <strong><span style="color: rgba(255, 0, 0, 1)">查看语句的详细执行信息</span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190907210012355-225435440.png"></span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)"> </span></strong><span style="color: rgba(255, 0, 0, 1)"> db.test_num.ensureIndex({num:1})&nbsp; &nbsp;创建索引&nbsp; &nbsp;</span></p>
<p><span style="color: rgba(255, 0, 0, 1)">  db.test_num.find({num:99999}).explain("executionStats")</span></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190907210707357-1263872701.png"></span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  查询索引&nbsp; &nbsp;db.test_num.getIndexes()</span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190907211204376-323751555.png"></span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  删除索引:db.test_num.dropIndex({num:1})<br></span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190907211436358-920834010.png"></span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  创建唯一索引,用来去重</span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  db.test_num.ensureIndex({num:1},{"unique":true})</span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">  <img src="https://img2018.cnblogs.com/blog/1749518/201909/1749518-20190907212144292-1790061789.png"></span></strong></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)"> &nbsp; 索引注意事项:</span></strong></p>
<p><span style="color: rgba(255, 0, 0, 1)">    </span>1.查询操作非常频繁才使用索引。</p>
<p>    2. 升序降序不影响查询速度。</p>
<p>    3.数据量大,读写非常频繁,创建索引影响写入速度。</p>
<p>  <span style="color: rgba(51, 153, 102, 1)"><strong>要是写入也频繁,查询也频繁,可以使用读写分离,主负责写,一个负责写,不设置索引,定时同步到另一个mingodb,另一个进行读,设置索引。</strong></span></p>
<p><span style="color: rgba(51, 153, 102, 1)"><strong># TODO 权限</strong></span></p>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(51, 204, 204, 1)"><strong>二&nbsp; python使用mongodb</strong></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 配置mongodb</span>
<span style="color: rgba(0, 0, 255, 1)">from</span> pymongo <span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> MongoClient
my_collection </span>= 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, 0, 0, 1)">)
db </span>= my_collection</pre>
</div>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(51, 153, 102, 1)"><strong>(一)mongodb取数据的问题</strong></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 从mongodb中直接取数据,因为objectid是一个objects类型,直接取值,然后jsonify给前端,报错</span>
TypeError: Object of type ObjectId <span style="color: rgba(0, 0, 255, 1)">is</span> <span style="color: rgba(0, 0, 255, 1)">not</span><span style="color: rgba(0, 0, 0, 1)"> JSON serializable
</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)">from</span> flask <span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> Flask, jsonify
</span><span style="color: rgba(0, 0, 255, 1)">from</span> pymongo <span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> MongoClient
</span><span style="color: rgba(255, 0, 0, 1)">from bson import</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)"> json_util</span>
app </span>= Flask(<span style="color: rgba(128, 0, 128, 1)">__name__</span><span style="color: rgba(0, 0, 0, 1)">)
client </span>= 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, 0, 0, 1)">)
collection </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pzgl_manage</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)">pgxx</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]

@app.route(</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><span style="color: rgba(0, 0, 255, 1)">def</span><span style="color: rgba(0, 0, 0, 1)"> index():
    collection.insert_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)">zhang</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>:10<span style="color: rgba(0, 0, 0, 1)">})
    ret </span>= collection.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)">zhang</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)">return</span><span style="color: rgba(0, 0, 0, 1)"> j<span style="color: rgba(255, 0, 0, 1)">son_util.dumps(ret)


</span></span><span style="color: rgba(0, 0, 255, 1)">if</span> <span style="color: rgba(128, 0, 128, 1)">__name__</span> == <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">__main__</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:
    app.run(debug</span>=<span style="color: rgba(0, 0, 0, 1)">True)

</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)"> {"_id": {"$oid": "5dd28b5d01a5afc41caa0c84"}, "name": "zhang", "age": 10}</span>


<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 从mongodb中取一组值,取出来的是一个游标对象,必须循环后,才能获得每一个值,怎么将这一组值一次return给前端。</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)">from</span> flask <span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> Flask, jsonify
</span><span style="color: rgba(0, 0, 255, 1)">from</span> pymongo <span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> MongoClient
</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)"> json_util
app </span>= Flask(<span style="color: rgba(128, 0, 128, 1)">__name__</span><span style="color: rgba(0, 0, 0, 1)">)
client </span>= 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, 0, 0, 1)">)
collection </span>= client[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pzgl_manage</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)">pzxx</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">]

@app.route(</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><span style="color: rgba(0, 0, 255, 1)">def</span><span style="color: rgba(0, 0, 0, 1)"> index():
    ret </span>=<span style="color: rgba(0, 0, 0, 1)"> collection.find()
    ret_li </span>=<span style="color: rgba(0, 0, 0, 1)"> list()
    </span><span style="color: rgba(0, 0, 255, 1)">for</span> r <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> ret:
      ret_li.append(r)
    ret_dict </span>= {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ret_li</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:ret_li}
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> json_util.dumps(ret_dict)


</span><span style="color: rgba(0, 0, 255, 1)">if</span> <span style="color: rgba(128, 0, 128, 1)">__name__</span> == <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">__main__</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:
    app.run(debug</span>=<span style="color: rgba(0, 0, 0, 1)">True)

</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 前端显示</span>
{<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ret_li</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)">_id</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)">$oid</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)">5dd24fd26567f28b57b1b8c3</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)">sheep_number</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)">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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-01</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)">p_type</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)">\u672c\u4ea4</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)">s_time</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)">2019-01-02</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)">o_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 1}, {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p_time</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)">2020-01-01</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)">p_type</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)">\u672c\u4ea4</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)">s_time</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)">2020-01-02</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)">o_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 2}]}, {<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, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$oid</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)">5dd252096567f28b57b1b90c</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)">sheep_number</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)">2</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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-02</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)">p_type</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)">\u51bb\u7cbe</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_type</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)">\u5c71\u7f8a</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_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20191118}, {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p_time</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)">2020-01-02</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)">p_type</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)">\u51bb\u7cbe</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_type</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)">\u5c71\u7f8a</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_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20200102}]}, {<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, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$oid</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)">5dd253506567f28b57b1b944</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)">sheep_number</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)">3</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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-03</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)">s_time</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)">2019-01-04</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)">p_pyte</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)">\u51bb\u7cbe</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_type</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)">\u5976\u725b</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_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_num</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20190103, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">e_sex</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)">\u6027\u63a7</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)">p_time</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)">2020-01-03</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)">s_time</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)">2020-01-04</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)">p_pyte</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)">\u51bb\u7cbe</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_type</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)">\u5976\u725b</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_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_num</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20200103, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">e_sex</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)">\u666e\u901a</span><span style="color: rgba(128, 0, 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)"> 问题来了,前端对于汉字的解析不是很好,怎么解决这个问题,通过下面的json的例子,可以解决</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> json.dumps(json.loads(json_util.dumps(ret_dict)),ensure_ascii=<span style="color: rgba(0, 0, 0, 1)">False)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 前端显示</span>
{<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ret_li</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)">_id</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)">$oid</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)">5dd24fd26567f28b57b1b8c3</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)">sheep_number</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)">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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-01</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)">p_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s_time</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)">2019-01-02</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)">o_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 1}, {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p_time</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)">2020-01-01</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)">p_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s_time</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)">2020-01-02</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)">o_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 2}]}, {<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, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$oid</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)">5dd252096567f28b57b1b90c</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)">sheep_number</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)">2</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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-02</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)">p_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20191118}, {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p_time</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)">2020-01-02</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)">p_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20200102}]}, {<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, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$oid</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)">5dd253506567f28b57b1b944</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)">sheep_number</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)">3</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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-03</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)">s_time</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)">2019-01-04</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)">p_pyte</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_num</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20190103, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">e_sex</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(128, 0, 0, 1)">"</span>}, {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p_time</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)">2020-01-03</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)">s_time</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)">2020-01-04</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)">p_pyte</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_num</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20200103, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">e_sex</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(128, 0, 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)"> 解决办法二:不人为构造列表,直接用json进行转换</span>
@app.route(<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><span style="color: rgba(0, 0, 255, 1)">def</span><span style="color: rgba(0, 0, 0, 1)"> index():
    ret </span>=<span style="color: rgba(0, 0, 0, 1)"> collection.find()
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> json.dumps(json.loads(json_util.dumps(ret)),ensure_ascii=<span style="color: rgba(0, 0, 0, 1)">False)
    </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>
[{<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, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$oid</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)">5dd24fd26567f28b57b1b8c3</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)">sheep_number</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)">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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-01</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)">p_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s_time</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)">2019-01-02</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)">o_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 1}, {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p_time</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)">2020-01-01</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)">p_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">s_time</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)">2020-01-02</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)">o_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 2}]}, {<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, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$oid</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)">5dd252096567f28b57b1b90c</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)">sheep_number</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)">2</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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-02</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)">p_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20191118}, {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p_time</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)">2020-01-02</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)">p_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_number</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20200102}]}, {<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, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$oid</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)">5dd253506567f28b57b1b944</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)">sheep_number</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)">3</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)">equipement_number</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)">88888888</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)">s_detail</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)">p_time</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)">2019-01-03</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)">s_time</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)">2019-01-04</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)">p_pyte</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_num</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20190103, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">e_sex</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(128, 0, 0, 1)">"</span>}, {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">p_time</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)">2020-01-03</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)">s_time</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)">2020-01-04</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)">p_pyte</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_type</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(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_count</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 100, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">d_num</span><span style="color: rgba(128, 0, 0, 1)">"</span>: 20200103, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">e_sex</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(128, 0, 0, 1)">"</span>}]}]</pre>
</div>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(51, 153, 102, 1)"><strong>(二)取出的数据有中文,前端无法显示问题</strong></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 解决办法:ensure_ascii:False </span>
@app.route(<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><span style="color: rgba(0, 0, 255, 1)">def</span><span style="color: rgba(0, 0, 0, 1)"> index():
    ret </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)">张</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)">return</span> json.dumps(ret,<span style="color: rgba(255, 0, 0, 1)">ensure_ascii=</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)">False</span>)

</span><span style="color: rgba(0, 0, 255, 1)">if</span> <span style="color: rgba(128, 0, 128, 1)">__name__</span> == <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">__main__</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">:
    app.run(debug</span>=True)</pre>
</div>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(51, 153, 102, 1)"><strong>(三) 增删改查</strong></span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查询单条数据</span>
query = {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sheep_number</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)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">}
db.find_one(query)
</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)">加入要过滤id,其他字段都保留则,设置查询条件为
query </span>= {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sheep_number</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)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span>} limit = {<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(0, 0, 0, 1)">:0} <span style="color: rgba(255, 0, 0, 1)"># 将不需要显示的字段以键值对的形式设置,值为0</span>
db.find_one(query,limit)
</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)">db.find(query)
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 增加一条数据</span>
query = {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sheep_number</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)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">}
insert_info </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>:1,<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>:2<span style="color: rgba(0, 0, 0, 1)">}
先查询到数据,在给指定的字段增加信息
db.update(query,{</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">$addToSet</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(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:insert_info}})
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 修改一条数据</span>
query = {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sheep_number</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)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">}
alter_info </span>= {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sheep_number</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)">100</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">}
db.update_one(query,{</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)">:alter_info})
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 删除一条数据</span>
query = {<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">sheep_number</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)">1</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">}
db.delete_one(query)</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/meloncodezhang/p/11442640.html
頁: [1]
查看完整版本: mongodb数据库