mongo

127 阅读11分钟

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="text/css" http-equiv="Content-Style-Type">
<title>mongo数据库的&#13;
增删改查</title>
</head>
<body>
<h1 align="center" class="root">
<a name="3cojd2mj9c1mar9hukqm66qv3p">mongo数据库的&#13;
增删改查</a>
</h1>
<div align="center" class="globalOverview">

</div>
<h2 class="topic">
<a name="7s7pn7dcoobhrtmcbskpvjo8fv">注意事项</a>
</h2>
<h3 class="topic">
<a name="7r1k662c70fqu4qqpv7g1bpjr5">&nbsp;1.需要用管理员身份打开cmd控制台&#13;
   然后输入: mongod --dbpath D:\data\db</a>
</h3>
<h3 class="topic">
<a name="1q42juhbtji4idoj00kg09sobv">&nbsp;&nbsp;mongod   开机</a>
</h3>
<h3 class="topic">
<a name="62o8plv6ma5mlgsr9tt451ink1">&nbsp;&nbsp;mongo  使用mongo</a>
</h3>
<h3 class="topic">
<a name="1ndbah63jamf0j0hici3ejqn5n">&nbsp;2.上面输入完以后窗口是不可以关的</a>
</h3>
<h3 class="topic">
<a name="3eg7e9afsemhnof0gekofjoe44">&nbsp;3.要对mongo进行操作,需要再开一个cmd窗口,输入mongo回车&#13;
   进入到mongo的环境中。</a>
</h3>
<h2 class="topic">
<a name="1nldu9or3ivkub6pve5l8ksdja">1.基本的一些操作</a>
</h2>
<h3 class="topic">
<a name="12h031uj947mfjpsl0pnnbquog">&nbsp;1.show dbs :列出所有的数据库</a>
</h3>
<h3 class="topic">
<a name="0udvm1keo5n46d3696l08mt4no">&nbsp;2.use 数据库名字</a>
</h3>
<h3 class="topic">
<a name="0rplum00mr67horsv1qlo0l1c4">&nbsp;&nbsp;用来指定使用哪一个数据库;&#13;
当这个数据库名不存在的时候&#13;
就会新建这个数据库</a>
</h3>
<h3 class="topic">
<a name="7gb8361v4pp0n7nd7v8e4r26ii">&nbsp;3.db : 查看当前所在的数据库</a>
</h3>
<h3 class="topic">
<a name="3vbjfgah3ao5vj5pgf90hdm43j">&nbsp;&nbsp;db.表名</a>
</h3>
<h3 class="topic">
<a name="7omm4t0f4jrmviiotcleo6g94e">&nbsp;&nbsp;&nbsp;如果这个表名存在就使用这个表</a>
</h3>
<h3 class="topic">
<a name="477odmihgqi241urt1vriikvf0">&nbsp;&nbsp;&nbsp;如果这个表名不存在就会在当前的&#13;
数据库里面新建这个表名,也就是集合</a>
</h3>
<h3 class="topic">
<a name="3t9k89qmhsjn6lpm7ttkd8tpmq">&nbsp;4.cls :清屏幕</a>
</h3>
<h3 class="topic">
<a name="74kkspnsjvlhknhk936t2j0t44">&nbsp;5.db.createCollection("表名字"):向当前数据库添加表</a>
</h3>
<h3 class="topic">
<a name="0cs1u918lnf66h9qld6lrlfes5">&nbsp;6.show tables:显示当前数据库下面的表</a>
</h3>
<h2 class="topic">
<a name="0ksjbefh1qmf6qfs5njjah6cpb">2.增</a>
</h2>
<h3 class="topic">
<a name="0kv7kaa9bq9jrt1npqj1ad65re">&nbsp;insert</a>
</h3>
<h3 class="topic">
<a name="6nf38h1fu2kgjsr102ql51j11e">&nbsp;&nbsp;例如:db.student.insert({ "name":"liuchun","age":18,"sex":"woman" });&#13;
          这里的student 就是集合,类似于关系型数据库中的表;&#13;
          在这个集合里面有许多json;&#13;
          如果在输入该命令的时候没有这个集合,就会自动新创建这个集合;</a>
</h3>
<h2 class="topic">
<a name="6dsaakt18k0mmda6j8lrtsptp2">3.导入</a>
</h2>
<h3 class="topic">
<a name="7870sv5abcos26kk9gpvmk2hrn">&nbsp;mongoimport</a>
</h3>
<h3 class="topic">
<a name="1r05qbosmgb009io4kbbfv0n8k">&nbsp;&nbsp;例如:mongonimport --db test --collection restaurants --drop --file primer-mytest.json;&#13;
&#13;
--db test : 是指定想要往哪个数据库里面导入数据;&#13;
--collection restaurants : 是指定想要往哪个集合中导入数据;&#13;
--drop : 是把当前这个集合清空;&#13;
dataset.json : 就是自己想要导入的数据文件名</a>
</h3>
<h2 class="topic">
<a name="6t7ms38kthq2o8178h3jt4nfus">4.删</a>
</h2>
<h3 class="topic">
<a name="0jfuhe4efui5k10kvvjp325h14">&nbsp;drop</a>
</h3>
<h3 class="topic">
<a name="5dedjus93mrd619ot2n1fkd1jq">&nbsp;&nbsp;db.dropDatabase( ): 删除当前所在的数据库</a>
</h3>
<h3 class="topic">
<a name="40nsfblj24lvsub1vmq0mjh1o5">&nbsp;&nbsp;db.表名.drop( ):删除这个指定表名的表</a>
</h3>
<h3 class="topic">
<a name="5gjffrru8feaen4srmmhjmokti">&nbsp;remove( )</a>
</h3>
<h3 class="topic">
<a name="1l074qj5cbt4bqvaums8v776vc">&nbsp;&nbsp;db.chunchun.remove( )</a>
</h3>
<h3 class="topic">
<a name="4l65s5tofmqourqikgdtj7j69g">&nbsp;&nbsp;db.student.remove({ "age":20},true)</a>
</h3>
<h3 class="topic">
<a name="03pmfk74aitr1i3cankl45ltla">&nbsp;&nbsp;&nbsp;删除在学生表中的年龄&#13;
等于20,的第一条数据;&#13;
如果不加第二个参数true,&#13;
就是把这个集合满足条件&#13;
的都删掉;</a>
</h3>
<h3 class="topic">
<a name="0fe6fgrlipatotrg2t64q930m0">&nbsp;&nbsp;db.student.remove(  )</a>
</h3>
<h3 class="topic">
<a name="01ff4h28ckarnss1g7j5nvj135">&nbsp;&nbsp;&nbsp;把学生表里面的东西都删掉,但是这个&#13;
表还在;</a>
</h3>
<h2 class="topic">
<a name="4g3foiq9c0nisbghkgfbo8pn98">5.改</a>
</h2>
<h3 class="topic">
<a name="0clsg5huhcsnk8d042f61gqqu1">&nbsp;update( )</a>
</h3>
<h3 class="topic">
<a name="1e2bl9b75n4g5vae75ef29419m">&nbsp;&nbsp;update({修改的条件} , {修改器:{修改的内容}} , 第三个参数 , 第四个参数)</a>
</h3>
<h3 class="topic">
<a name="7k0haug4pos0bcsgbrmunb00hl">&nbsp;&nbsp;&nbsp;</a>
</h3>
<p class="topicImage">
![图片描述](attimg://article/content/picture/201805/07/162944vu44bptr944tomkt.png)
</p>
<h3 class="topic">
<a name="1cjvn5pl1np5elp6g7dnkgse1c">&nbsp;&nbsp;&nbsp;修改器:</a>
</h3>
<h3 class="topic">
<a name="63hen2ugls05ki61h7906g7bjg">&nbsp;&nbsp;&nbsp;&nbsp;参考网址:https://www.cnblogs.com/myrunning/p/5655615.html</a>
</h3>
<h3 class="topic">
<a name="1cto349ums7vc02undgtc5sc0r">&nbsp;&nbsp;&nbsp;&nbsp;$set 修改</a>
</h3>
<h3 class="topic">
<a name="3af5fhorvlen6i8gfl47skh8eg">&nbsp;&nbsp;&nbsp;&nbsp;数组修改器</a>
</h3>
<h3 class="topic">
<a name="06u51vbbb4aod60uhid7jfppiu">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$push 数组修改器</a>
</h3>
<h3 class="topic">
<a name="073i97ara2lgddocdvpqps2atb">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果字段的值是数组类型;&#13;
要加入新值的话,就要用&#13;
这个;往数组末尾加入一个&#13;
元素;</a>
</h3>
<h3 class="topic">
<a name="2j8loa7fafri87old0v39i0joh">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$addToSet 数组修改器,作用&#13;
和$ne差不多,更方便点</a>
</h3>
<h3 class="topic">
<a name="6ve3ld884atbb203i85b1rc9v2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ne 数组修改器</a>
</h3>
<h3 class="topic">
<a name="7sh52emh2jt8pea70crhgvgmn7">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在查询文档中,如果这个值不在&#13;
数组里面就加进去;如果已经存在&#13;
就不添加;</a>
</h3>
<h3 class="topic">
<a name="34c3d9mp6mkqofume9pbo9nl9d">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$each 要喝$addToSet组合使用;&#13;
可以一次插入几个不重复的值;</a>
</h3>
<h3 class="topic">
<a name="26usjm7vmd2ldjiaibafsgruo2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.users.update({"_id":ObjectId(_id)} , {$addToSet:{ "emails": $each:["joe@example.com","joe@python.com","joe@php.com"]}})</a>
</h3>
<h3 class="topic">
<a name="1ho9j3qu2o2l7q729vnfd7r093">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pop 根据key来决定;&#13;
是删除数组的尾端,还是&#13;
头部;</a>
</h3>
<h3 class="topic">
<a name="167fvdekapo7jma5048nm0v8ad">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$pop:{key:1}} 从数组末尾删除一个元素&#13;
{$pop:{key:-1}} 从数组头部删除一个元素</a>
</h3>
<h3 class="topic">
<a name="5g3e2stlrr18sqkq8dedvomdf4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pull 会删除指定的key的值</a>
</h3>
<h3 class="topic">
<a name="3oi970vie31lnhdntb2hrlmdad">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{$pull: { "name": ["liuchun" , "liunian"] }  }</a>
</h3>
<h3 class="topic">
<a name="25fd400iotk31jpd7rnbs5ge45">&nbsp;&nbsp;&nbsp;&nbsp;$unset 删除字段</a>
</h3>
<h3 class="topic">
<a name="699pkrjr4ae6fsponn2qclagjs">&nbsp;&nbsp;&nbsp;&nbsp;$inc 相当于变成语言的&ldquo;+=&rdquo;</a>
</h3>
<h3 class="topic">
<a name="745ggn6em897reqdjpqduovi61">&nbsp;&nbsp;&nbsp;&nbsp;$rename 重命名某个列</a>
</h3>
<h3 class="topic">
<a name="4rfcmuoua26r0jht6snqdvq7qm">&nbsp;&nbsp;&nbsp;&nbsp;如果在指令中没有修改器,就是用后面的数据去替换符合前面条件的&#13;
第一条数据</a>
</h3>
<h3 class="topic">
<a name="04m5t7opheu26fquj2u6rjt00i">&nbsp;&nbsp;&nbsp;第三个参数</a>
</h3>
<h3 class="topic">
<a name="7bo8p9bk0da18k7t0i743386nd">&nbsp;&nbsp;&nbsp;&nbsp;将这个参数设置为true,是存在就更新,不存在就插入;&#13;
设置为false就是当不存在的时候不插入,这个是默认的值</a>
</h3>
<h3 class="topic">
<a name="1d67tgee71ib975k2j9egf294g">&nbsp;&nbsp;&nbsp;第四个参数</a>
</h3>
<h3 class="topic">
<a name="584f29248gg3qav1pejfucft8m">&nbsp;&nbsp;&nbsp;&nbsp;默认值是false,只更新找到的第一条数据&#13;
如果设置为true就把所有符合条件的记录都更新</a>
</h3>
<h3 class="topic">
<a name="1iu8vv86t9qrk57bbi3pv5odof">&nbsp;&nbsp;在mongo中还支持使用js代码,包括申明变量循环等</a>
</h3>
<h3 class="topic">
<a name="3l5vede1mpmiu7i5ef4f3jfk56">&nbsp;&nbsp;&nbsp;例如:for(var i=0;i&lt;10;i++){&#13;
                 db.chunchun.insert({name:&ldquo;lala" , age: i})</a>
</h3>
<h2 class="topic">
<a name="6s4n31tb7p9sct6hrvgtenboug">6.查</a>
</h2>
<h3 class="topic">
<a name="045fv6loh15m838ms12iasd92s">&nbsp;find()</a>
</h3>
<h3 class="topic">
<a name="7g6hi0fp9ht04dcknlpg1usk4u">&nbsp;&nbsp;&ldquo;$lt&rdquo;、&ldquo;$lte&rdquo;、&ldquo;$gt&rdquo;、&ldquo;$gte&rdquo;</a>
</h3>
<h3 class="topic">
<a name="4fiieciqnjf3lv8c0dbo2rpd4g">&nbsp;&nbsp;db.student.find( )</a>
</h3>
<h3 class="topic">
<a name="4m0t8j9vfu6ldmkg8t3np1eu9n">&nbsp;&nbsp;&nbsp;括号里面没有参数的话就是查找当前集合的所有数据</a>
</h3>
<h3 class="topic">
<a name="40tunj7qojkoqi4k4b1pvpp2ut">&nbsp;&nbsp;db.student.find( {"age":{$gt:20} }</a>
</h3>
<h3 class="topic">
<a name="5h7c4bdked6nb45hibdqpj0mgp">&nbsp;&nbsp;&nbsp;查找学生表里面的所有年龄大于20的学生</a>
</h3>
<h3 class="topic">
<a name="52p0ircti2g2b63jnsobrc4uke">&nbsp;&nbsp;db.student.find( {"age":{$gt:20} } .sort({ "age":1, "name":-1})</a>
</h3>
<h3 class="topic">
<a name="32k9qoanshijbtta9hqf6vh0bn">&nbsp;&nbsp;&nbsp;查找学生表里面的所有年龄大于20的学生;&#13;
并且进行排序,以年龄正序排,名字倒序排</a>
</h3>
<h3 class="topic">
<a name="5prph71vtmvqmruqhoi4f17l70">&nbsp;&nbsp;&nbsp;当sort的key后面的值给1就是正序,反之就是倒序</a>
</h3>
<h3 class="topic">
<a name="2l6lub63jajm9tujolqo4kr8si">&nbsp;&nbsp;or查询</a>
</h3>
<h3 class="topic">
<a name="1clnv7jh3bpcbsp6rebuu6e6ch">&nbsp;&nbsp;&nbsp;$in</a>
</h3>
<h3 class="topic">
<a name="5i8sapjchsj1b7ini9ktbjdesv">&nbsp;&nbsp;&nbsp;&nbsp;db.student.find( {"age":{  $in : [20,10,30]   }   } )</a>
</h3>
<h3 class="topic">
<a name="7l0e6o0f093f9ff6898vka53sg">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年龄在10,20,30中的学生</a>
</h3>
<h3 class="topic">
<a name="5jvfjkhmsr1uodud6i242e1fsn">&nbsp;&nbsp;&nbsp;$or</a>
</h3>
<h3 class="topic">
<a name="64nrf2vc5uqefj45ueht19tto4">&nbsp;&nbsp;&nbsp;&nbsp;db.student.find( {   $or : [ {"age":"10"} , {"name":"la"} ]      } )</a>
</h3>
<h3 class="topic">
<a name="4k8nhu6f4c0kcmm9mvtkmts00i">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年龄10岁 或者 名字是 la 的学生</a>
</h3>
<h3 class="topic">
<a name="0h507pooj8gu5i9efr7j3bmtku">&nbsp;&nbsp;&nbsp;$mod 取余</a>
</h3>
<h3 class="topic">
<a name="70t96r36b8c73nitvco8eh51hl">&nbsp;&nbsp;&nbsp;&nbsp;db.student.find( {"age":{  $mod : [20,3]   }   } )</a>
</h3>
<h3 class="topic">
<a name="0as7msmmljgoca7b0dssjtkq3v">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取所有年龄取余20,等于3的学生</a>
</h3>
<h3 class="topic">
<a name="77amk7e3c76o25b09hcopnksgb">&nbsp;&nbsp;&nbsp;$not 取反</a>
</h3>
<h3 class="topic">
<a name="5vt67lu5mkjucbpgmlkopchkvc">&nbsp;&nbsp;&nbsp;&nbsp;db.student.find( {"age":{  $not : [  { "age":10 }  ]   }   } )</a>
</h3>
<h3 class="topic">
<a name="39kj6v8unqh5bqjmq3hks1hbat">&nbsp;&nbsp;&nbsp;$exists 存在</a>
</h3>
<h3 class="topic">
<a name="3n81532f0cqjnu0j7moag2dcm1">&nbsp;&nbsp;&nbsp;&nbsp;db.student.find( {"age":{  $exists :  true }   } )</a>
</h3>
<h3 class="topic">
<a name="4hhnfok0kmelkca5cupgapdkcf">&nbsp;&nbsp;&nbsp;正则表达式</a>
</h3>
<h3 class="topic">
<a name="702tbn1lb1pv76h2i1ibou1dqd">&nbsp;&nbsp;&nbsp;&nbsp;db.student.find( { name : /acme.*corp/i } )</a>
</h3>
<h3 class="topic">
<a name="4e3q1rab2cdqpk4q4gglcs6uof">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i是区分大小写</a>
</h3>
<h3 class="topic">
<a name="0jje347fejsgu3vjt2t7t1bl17">&nbsp;&nbsp;&nbsp;$size 个数</a>
</h3>
<h3 class="topic">
<a name="5jgg0n3fae2olmn7kgkk1okb3h">&nbsp;&nbsp;集合函数</a>
</h3>
<h3 class="topic">
<a name="7n6a2so0eg8vv5up172fum7ubu">&nbsp;&nbsp;&nbsp;count( ) : 总数</a>
</h3>
<h3 class="topic">
<a name="7omr7rgavplkjmjc973ce6csb6">&nbsp;&nbsp;&nbsp;&nbsp;db.persons.find ( { country : 'usa' } ) .count( )</a>
</h3>
<h3 class="topic">
<a name="4pmp27o97u8111rb686a9psc5b">&nbsp;&nbsp;find(参数1,参数2) 传两个参数的用法</a>
</h3>
<h3 class="topic">
<a name="29g9q33m14ql72isu7oitbo5kr">&nbsp;&nbsp;&nbsp;db.student.find( { },{"age":1 , "name":1 } )</a>
</h3>
<h3 class="topic">
<a name="2si4rfb760l6r6gf7dmcii22kh">&nbsp;&nbsp;&nbsp;&nbsp;第一个是要查找这个表的所有数据;&#13;
第二个参数是要查找后只返回age和name字段;&#13;
如果不加上&ldquo;_id":0 ;这里返回的结果还是有_id字段</a>
</h3>
<h3 class="topic">
<a name="419n8nbglg1dett6ndu3cmlklk">&nbsp;&nbsp;&nbsp;&nbsp;&ldquo;age":1 表示要展示;&#13;
   如果是"age":0 表示不展示</a>
</h3>
<h3 class="topic">
<a name="3pftc5lmm79v0g88gbjacp7g2b">&nbsp;&nbsp;&nbsp;db.student.find( { },{"limit":1 , "skip":1 }</a>
</h3>
<h3 class="topic">
<a name="56n3c33thmidna2ntg33hg2kdq">&nbsp;&nbsp;&nbsp;&nbsp;limit( 1 ) : 限制只选中一条数据</a>
</h3>
<h3 class="topic">
<a name="75hqrlp5uf49j1umb0t87krstn">&nbsp;&nbsp;&nbsp;&nbsp;skip( 1 ): 是跳过第一条数据,从第二条开始读</a>
</h3>
<h3 class="topic">
<a name="379a6nhehomrr906gk5pdiaupl">&nbsp;&nbsp;&nbsp;&nbsp;一般用在分页的时候</a>
</h3>
<h2 class="topic">
<a name="36ou9s9dc7ft1hp8psgktnlo66">7.导出</a>
</h2>
<h3 class="topic">
<a name="2niegh89ob16oi5vmfojuhu2e4">&nbsp;mongoexport : 可以把一个collecton到处成&#13;
Json格式或者Csv格式的文件。</a>
</h3>
<h3 class="topic">
<a name="72a3go30jccan4qn54msu43js9">&nbsp; mongoexport -d dbname -c collectionname -o file --type json/csv -f field&#13;
        参数说明:&#13;
            -d :数据库名&#13;
            -c :collection名&#13;
            -o :输出的文件名&#13;
            --type : 输出的格式,默认为json&#13;
            -f :输出的字段,如果-type为csv,则需要加上-f "字段名"&#13;
    、示例:&#13;
        mongoexport -d mongotest -c users -o D:/users.json --type json -f  "_id,user_id,user_name,age,status"</a>
</h3>
<h3 class="topic">
<a name="2rjc8mh0gc3k0bda3ndojcvo2j">&nbsp;&nbsp;输入这个命令是要在开启了mongo&#13;
的服务,而且不是在mongo的环境下</a>
</h3>
<h2 class="topic">
<a name="3hm8gorvopua1edptu9rr227ge">8.导入</a>
</h2>
<h3 class="topic">
<a name="33upiomm3j40igfb7ecetlp2bo">&nbsp; mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field&#13;
        参数说明:&#13;
            -d :数据库名&#13;
            -c :collection名&#13;
            --type :导入的格式默认json&#13;
            -f :导入的字段名&#13;
            --headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段&#13;
            --file :要导入的文件&#13;
 &#13;
   、示例:&#13;
        mongoimport -d mongotest -c users --file D:/users.json --type json</a>
</h3>
</body>
</html>