<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数据库的
增删改查</title>
</head>
<body>
<h1 align="center" class="root">
<a name="3cojd2mj9c1mar9hukqm66qv3p">mongo数据库的
增删改查</a>
</h1>
<div align="center" class="globalOverview">
</div>
<h2 class="topic">
<a name="7s7pn7dcoobhrtmcbskpvjo8fv">注意事项</a>
</h2>
<h3 class="topic">
<a name="7r1k662c70fqu4qqpv7g1bpjr5"> 1.需要用管理员身份打开cmd控制台
然后输入: mongod --dbpath D:\data\db</a>
</h3>
<h3 class="topic">
<a name="1q42juhbtji4idoj00kg09sobv"> mongod 开机</a>
</h3>
<h3 class="topic">
<a name="62o8plv6ma5mlgsr9tt451ink1"> mongo 使用mongo</a>
</h3>
<h3 class="topic">
<a name="1ndbah63jamf0j0hici3ejqn5n"> 2.上面输入完以后窗口是不可以关的</a>
</h3>
<h3 class="topic">
<a name="3eg7e9afsemhnof0gekofjoe44"> 3.要对mongo进行操作,需要再开一个cmd窗口,输入mongo回车
进入到mongo的环境中。</a>
</h3>
<h2 class="topic">
<a name="1nldu9or3ivkub6pve5l8ksdja">1.基本的一些操作</a>
</h2>
<h3 class="topic">
<a name="12h031uj947mfjpsl0pnnbquog"> 1.show dbs :列出所有的数据库</a>
</h3>
<h3 class="topic">
<a name="0udvm1keo5n46d3696l08mt4no"> 2.use 数据库名字</a>
</h3>
<h3 class="topic">
<a name="0rplum00mr67horsv1qlo0l1c4"> 用来指定使用哪一个数据库;
当这个数据库名不存在的时候
就会新建这个数据库</a>
</h3>
<h3 class="topic">
<a name="7gb8361v4pp0n7nd7v8e4r26ii"> 3.db : 查看当前所在的数据库</a>
</h3>
<h3 class="topic">
<a name="3vbjfgah3ao5vj5pgf90hdm43j"> db.表名</a>
</h3>
<h3 class="topic">
<a name="7omm4t0f4jrmviiotcleo6g94e"> 如果这个表名存在就使用这个表</a>
</h3>
<h3 class="topic">
<a name="477odmihgqi241urt1vriikvf0"> 如果这个表名不存在就会在当前的
数据库里面新建这个表名,也就是集合</a>
</h3>
<h3 class="topic">
<a name="3t9k89qmhsjn6lpm7ttkd8tpmq"> 4.cls :清屏幕</a>
</h3>
<h3 class="topic">
<a name="74kkspnsjvlhknhk936t2j0t44"> 5.db.createCollection("表名字"):向当前数据库添加表</a>
</h3>
<h3 class="topic">
<a name="0cs1u918lnf66h9qld6lrlfes5"> 6.show tables:显示当前数据库下面的表</a>
</h3>
<h2 class="topic">
<a name="0ksjbefh1qmf6qfs5njjah6cpb">2.增</a>
</h2>
<h3 class="topic">
<a name="0kv7kaa9bq9jrt1npqj1ad65re"> insert</a>
</h3>
<h3 class="topic">
<a name="6nf38h1fu2kgjsr102ql51j11e"> 例如:db.student.insert({ "name":"liuchun","age":18,"sex":"woman" });
这里的student 就是集合,类似于关系型数据库中的表;
在这个集合里面有许多json;
如果在输入该命令的时候没有这个集合,就会自动新创建这个集合;</a>
</h3>
<h2 class="topic">
<a name="6dsaakt18k0mmda6j8lrtsptp2">3.导入</a>
</h2>
<h3 class="topic">
<a name="7870sv5abcos26kk9gpvmk2hrn"> mongoimport</a>
</h3>
<h3 class="topic">
<a name="1r05qbosmgb009io4kbbfv0n8k"> 例如:mongonimport --db test --collection restaurants --drop --file primer-mytest.json;
--db test : 是指定想要往哪个数据库里面导入数据;
--collection restaurants : 是指定想要往哪个集合中导入数据;
--drop : 是把当前这个集合清空;
dataset.json : 就是自己想要导入的数据文件名</a>
</h3>
<h2 class="topic">
<a name="6t7ms38kthq2o8178h3jt4nfus">4.删</a>
</h2>
<h3 class="topic">
<a name="0jfuhe4efui5k10kvvjp325h14"> drop</a>
</h3>
<h3 class="topic">
<a name="5dedjus93mrd619ot2n1fkd1jq"> db.dropDatabase( ): 删除当前所在的数据库</a>
</h3>
<h3 class="topic">
<a name="40nsfblj24lvsub1vmq0mjh1o5"> db.表名.drop( ):删除这个指定表名的表</a>
</h3>
<h3 class="topic">
<a name="5gjffrru8feaen4srmmhjmokti"> remove( )</a>
</h3>
<h3 class="topic">
<a name="1l074qj5cbt4bqvaums8v776vc"> db.chunchun.remove( )</a>
</h3>
<h3 class="topic">
<a name="4l65s5tofmqourqikgdtj7j69g"> db.student.remove({ "age":20},true)</a>
</h3>
<h3 class="topic">
<a name="03pmfk74aitr1i3cankl45ltla"> 删除在学生表中的年龄
等于20,的第一条数据;
如果不加第二个参数true,
就是把这个集合满足条件
的都删掉;</a>
</h3>
<h3 class="topic">
<a name="0fe6fgrlipatotrg2t64q930m0"> db.student.remove( )</a>
</h3>
<h3 class="topic">
<a name="01ff4h28ckarnss1g7j5nvj135"> 把学生表里面的东西都删掉,但是这个
表还在;</a>
</h3>
<h2 class="topic">
<a name="4g3foiq9c0nisbghkgfbo8pn98">5.改</a>
</h2>
<h3 class="topic">
<a name="0clsg5huhcsnk8d042f61gqqu1"> update( )</a>
</h3>
<h3 class="topic">
<a name="1e2bl9b75n4g5vae75ef29419m"> update({修改的条件} , {修改器:{修改的内容}} , 第三个参数 , 第四个参数)</a>
</h3>
<h3 class="topic">
<a name="7k0haug4pos0bcsgbrmunb00hl"> </a>
</h3>
<p class="topicImage">

</p>
<h3 class="topic">
<a name="1cjvn5pl1np5elp6g7dnkgse1c"> 修改器:</a>
</h3>
<h3 class="topic">
<a name="63hen2ugls05ki61h7906g7bjg"> 参考网址:https://www.cnblogs.com/myrunning/p/5655615.html</a>
</h3>
<h3 class="topic">
<a name="1cto349ums7vc02undgtc5sc0r"> $set 修改</a>
</h3>
<h3 class="topic">
<a name="3af5fhorvlen6i8gfl47skh8eg"> 数组修改器</a>
</h3>
<h3 class="topic">
<a name="06u51vbbb4aod60uhid7jfppiu"> $push 数组修改器</a>
</h3>
<h3 class="topic">
<a name="073i97ara2lgddocdvpqps2atb"> 如果字段的值是数组类型;
要加入新值的话,就要用
这个;往数组末尾加入一个
元素;</a>
</h3>
<h3 class="topic">
<a name="2j8loa7fafri87old0v39i0joh"> $addToSet 数组修改器,作用
和$ne差不多,更方便点</a>
</h3>
<h3 class="topic">
<a name="6ve3ld884atbb203i85b1rc9v2"> $ne 数组修改器</a>
</h3>
<h3 class="topic">
<a name="7sh52emh2jt8pea70crhgvgmn7"> 在查询文档中,如果这个值不在
数组里面就加进去;如果已经存在
就不添加;</a>
</h3>
<h3 class="topic">
<a name="34c3d9mp6mkqofume9pbo9nl9d"> $each 要喝$addToSet组合使用;
可以一次插入几个不重复的值;</a>
</h3>
<h3 class="topic">
<a name="26usjm7vmd2ldjiaibafsgruo2"> 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"> $pop 根据key来决定;
是删除数组的尾端,还是
头部;</a>
</h3>
<h3 class="topic">
<a name="167fvdekapo7jma5048nm0v8ad"> {$pop:{key:1}} 从数组末尾删除一个元素
{$pop:{key:-1}} 从数组头部删除一个元素</a>
</h3>
<h3 class="topic">
<a name="5g3e2stlrr18sqkq8dedvomdf4"> $pull 会删除指定的key的值</a>
</h3>
<h3 class="topic">
<a name="3oi970vie31lnhdntb2hrlmdad"> {$pull: { "name": ["liuchun" , "liunian"] } }</a>
</h3>
<h3 class="topic">
<a name="25fd400iotk31jpd7rnbs5ge45"> $unset 删除字段</a>
</h3>
<h3 class="topic">
<a name="699pkrjr4ae6fsponn2qclagjs"> $inc 相当于变成语言的“+=”</a>
</h3>
<h3 class="topic">
<a name="745ggn6em897reqdjpqduovi61"> $rename 重命名某个列</a>
</h3>
<h3 class="topic">
<a name="4rfcmuoua26r0jht6snqdvq7qm"> 如果在指令中没有修改器,就是用后面的数据去替换符合前面条件的
第一条数据</a>
</h3>
<h3 class="topic">
<a name="04m5t7opheu26fquj2u6rjt00i"> 第三个参数</a>
</h3>
<h3 class="topic">
<a name="7bo8p9bk0da18k7t0i743386nd"> 将这个参数设置为true,是存在就更新,不存在就插入;
设置为false就是当不存在的时候不插入,这个是默认的值</a>
</h3>
<h3 class="topic">
<a name="1d67tgee71ib975k2j9egf294g"> 第四个参数</a>
</h3>
<h3 class="topic">
<a name="584f29248gg3qav1pejfucft8m"> 默认值是false,只更新找到的第一条数据
如果设置为true就把所有符合条件的记录都更新</a>
</h3>
<h3 class="topic">
<a name="1iu8vv86t9qrk57bbi3pv5odof"> 在mongo中还支持使用js代码,包括申明变量循环等</a>
</h3>
<h3 class="topic">
<a name="3l5vede1mpmiu7i5ef4f3jfk56"> 例如:for(var i=0;i<10;i++){
db.chunchun.insert({name:“lala" , age: i})</a>
</h3>
<h2 class="topic">
<a name="6s4n31tb7p9sct6hrvgtenboug">6.查</a>
</h2>
<h3 class="topic">
<a name="045fv6loh15m838ms12iasd92s"> find()</a>
</h3>
<h3 class="topic">
<a name="7g6hi0fp9ht04dcknlpg1usk4u"> “$lt”、“$lte”、“$gt”、“$gte”</a>
</h3>
<h3 class="topic">
<a name="4fiieciqnjf3lv8c0dbo2rpd4g"> db.student.find( )</a>
</h3>
<h3 class="topic">
<a name="4m0t8j9vfu6ldmkg8t3np1eu9n"> 括号里面没有参数的话就是查找当前集合的所有数据</a>
</h3>
<h3 class="topic">
<a name="40tunj7qojkoqi4k4b1pvpp2ut"> db.student.find( {"age":{$gt:20} }</a>
</h3>
<h3 class="topic">
<a name="5h7c4bdked6nb45hibdqpj0mgp"> 查找学生表里面的所有年龄大于20的学生</a>
</h3>
<h3 class="topic">
<a name="52p0ircti2g2b63jnsobrc4uke"> db.student.find( {"age":{$gt:20} } .sort({ "age":1, "name":-1})</a>
</h3>
<h3 class="topic">
<a name="32k9qoanshijbtta9hqf6vh0bn"> 查找学生表里面的所有年龄大于20的学生;
并且进行排序,以年龄正序排,名字倒序排</a>
</h3>
<h3 class="topic">
<a name="5prph71vtmvqmruqhoi4f17l70"> 当sort的key后面的值给1就是正序,反之就是倒序</a>
</h3>
<h3 class="topic">
<a name="2l6lub63jajm9tujolqo4kr8si"> or查询</a>
</h3>
<h3 class="topic">
<a name="1clnv7jh3bpcbsp6rebuu6e6ch"> $in</a>
</h3>
<h3 class="topic">
<a name="5i8sapjchsj1b7ini9ktbjdesv"> db.student.find( {"age":{ $in : [20,10,30] } } )</a>
</h3>
<h3 class="topic">
<a name="7l0e6o0f093f9ff6898vka53sg"> 年龄在10,20,30中的学生</a>
</h3>
<h3 class="topic">
<a name="5jvfjkhmsr1uodud6i242e1fsn"> $or</a>
</h3>
<h3 class="topic">
<a name="64nrf2vc5uqefj45ueht19tto4"> db.student.find( { $or : [ {"age":"10"} , {"name":"la"} ] } )</a>
</h3>
<h3 class="topic">
<a name="4k8nhu6f4c0kcmm9mvtkmts00i"> 年龄10岁 或者 名字是 la 的学生</a>
</h3>
<h3 class="topic">
<a name="0h507pooj8gu5i9efr7j3bmtku"> $mod 取余</a>
</h3>
<h3 class="topic">
<a name="70t96r36b8c73nitvco8eh51hl"> db.student.find( {"age":{ $mod : [20,3] } } )</a>
</h3>
<h3 class="topic">
<a name="0as7msmmljgoca7b0dssjtkq3v"> 取所有年龄取余20,等于3的学生</a>
</h3>
<h3 class="topic">
<a name="77amk7e3c76o25b09hcopnksgb"> $not 取反</a>
</h3>
<h3 class="topic">
<a name="5vt67lu5mkjucbpgmlkopchkvc"> db.student.find( {"age":{ $not : [ { "age":10 } ] } } )</a>
</h3>
<h3 class="topic">
<a name="39kj6v8unqh5bqjmq3hks1hbat"> $exists 存在</a>
</h3>
<h3 class="topic">
<a name="3n81532f0cqjnu0j7moag2dcm1"> db.student.find( {"age":{ $exists : true } } )</a>
</h3>
<h3 class="topic">
<a name="4hhnfok0kmelkca5cupgapdkcf"> 正则表达式</a>
</h3>
<h3 class="topic">
<a name="702tbn1lb1pv76h2i1ibou1dqd"> db.student.find( { name : /acme.*corp/i } )</a>
</h3>
<h3 class="topic">
<a name="4e3q1rab2cdqpk4q4gglcs6uof"> i是区分大小写</a>
</h3>
<h3 class="topic">
<a name="0jje347fejsgu3vjt2t7t1bl17"> $size 个数</a>
</h3>
<h3 class="topic">
<a name="5jgg0n3fae2olmn7kgkk1okb3h"> 集合函数</a>
</h3>
<h3 class="topic">
<a name="7n6a2so0eg8vv5up172fum7ubu"> count( ) : 总数</a>
</h3>
<h3 class="topic">
<a name="7omr7rgavplkjmjc973ce6csb6"> db.persons.find ( { country : 'usa' } ) .count( )</a>
</h3>
<h3 class="topic">
<a name="4pmp27o97u8111rb686a9psc5b"> find(参数1,参数2) 传两个参数的用法</a>
</h3>
<h3 class="topic">
<a name="29g9q33m14ql72isu7oitbo5kr"> db.student.find( { },{"age":1 , "name":1 } )</a>
</h3>
<h3 class="topic">
<a name="2si4rfb760l6r6gf7dmcii22kh"> 第一个是要查找这个表的所有数据;
第二个参数是要查找后只返回age和name字段;
如果不加上“_id":0 ;这里返回的结果还是有_id字段</a>
</h3>
<h3 class="topic">
<a name="419n8nbglg1dett6ndu3cmlklk"> “age":1 表示要展示;
如果是"age":0 表示不展示</a>
</h3>
<h3 class="topic">
<a name="3pftc5lmm79v0g88gbjacp7g2b"> db.student.find( { },{"limit":1 , "skip":1 }</a>
</h3>
<h3 class="topic">
<a name="56n3c33thmidna2ntg33hg2kdq"> limit( 1 ) : 限制只选中一条数据</a>
</h3>
<h3 class="topic">
<a name="75hqrlp5uf49j1umb0t87krstn"> skip( 1 ): 是跳过第一条数据,从第二条开始读</a>
</h3>
<h3 class="topic">
<a name="379a6nhehomrr906gk5pdiaupl"> 一般用在分页的时候</a>
</h3>
<h2 class="topic">
<a name="36ou9s9dc7ft1hp8psgktnlo66">7.导出</a>
</h2>
<h3 class="topic">
<a name="2niegh89ob16oi5vmfojuhu2e4"> mongoexport : 可以把一个collecton到处成
Json格式或者Csv格式的文件。</a>
</h3>
<h3 class="topic">
<a name="72a3go30jccan4qn54msu43js9"> mongoexport -d dbname -c collectionname -o file --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
-o :输出的文件名
--type : 输出的格式,默认为json
-f :输出的字段,如果-type为csv,则需要加上-f "字段名"
、示例:
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"> 输入这个命令是要在开启了mongo
的服务,而且不是在mongo的环境下</a>
</h3>
<h2 class="topic">
<a name="3hm8gorvopua1edptu9rr227ge">8.导入</a>
</h2>
<h3 class="topic">
<a name="33upiomm3j40igfb7ecetlp2bo"> mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
--type :导入的格式默认json
-f :导入的字段名
--headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
--file :要导入的文件
、示例:
mongoimport -d mongotest -c users --file D:/users.json --type json</a>
</h3>
</body>
</html>