星辰万里 發表於 2026-5-5 22:19:41

MongoDB高级查询详细

<h1><span style="font-family: 宋体; font-size: 18pt">前言</span></h1>
<p><span style="font-family: 宋体; font-size: 15px">前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦。如果没有安装MongoDB去看我的上一篇博客 &nbsp;MongoDB下载安装与简单增删改查&nbsp;</span></p>
<p><span style="font-family: 宋体; font-size: 15px">前奏:启动mongdb数据库服务,并进入shell界面</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; cmd</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; cd&nbsp;C:\Program Files\MongoDB\bin &nbsp;--进入mongdb安装文件的bin目录下。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; net start mongoDB; &nbsp;--开启mongoDB数据库服务</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; mongo &nbsp; --进入shell界面</span></p>
<h1><span style="font-family: 宋体; font-size: 18pt">常用命令</span></h1>
<p><span style="font-family: 宋体; font-size: 15px">&gt; show dbs &nbsp; &nbsp;-- 查看数据库列表</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; use admin &nbsp; --创建admin数据库,如果存在admin数据库则使用admin数据库</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db &nbsp; ---显示当前使用的数据库名称</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db.getName() &nbsp;---显示当前使用的数据库名称</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db.dropDatabase() &nbsp;--删当前使用的数据库</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db.repairDatabase() &nbsp;--修复当前数据库</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db.version() &nbsp; --当前数据库版本</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db.getMongo() &nbsp;--查看当前数据库的链接机器地址&nbsp;</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db.stats() 显示当前数据库状态,包含数据库名称,集合个数,当前数据库大小 ...</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db.getCollectionNames() &nbsp; --查看数据库中有那些个集合(表)</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; show collections &nbsp;&nbsp;&nbsp;--查看数据库中有那些个集合(表)</span></p>
<p><span style="font-family: 宋体; font-size: 15px">&gt; db.person.drop() &nbsp;--删除当前集合(表)person</span></p>
<h1><span style="font-family: 宋体; font-size: 18pt">MongoDB接入Javascrip风格语法,for,while,next,hasNext,forEach,toArray,findOne,limit</span></h1>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/092115048774359.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px">Note:</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、p={name:"张龙豪",age:18} 这个不是规范的json格式,使用这种类似javascript语法,对象会自动补全为规范的json格式{"name":"张龙豪","age":18}.</span></p>
<p><span style="font-family: 宋体; font-size: 15px">2、我在这里插入2条数据,一条是insert语法,一条是save语法,这里的insert与save是一样的功能。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/092120381588238.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px">Note:这里我主要用啦一个for语法,循环插入啦4条数据,是不是有点小激动。哈哈,mongodb就是这么任性。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/092138411748005.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px">Note:这里是吧查询出来的</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、while:作为程序员应该都不陌生他是个循环。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">2、hasNext: cursor集合遍历,是否还有数据。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">3、printjson:输出集合中的文档</span></p>
<p><span style="font-family: 宋体; font-size: 15px">4、next:当前文档,并向下遍历。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/092154415188148.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px">Note:forEach循环输入,必须定义一个函数供每个游标元素调用。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/092158170641032.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px">Note:游标也可以当作数组来用。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/092202179551337.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px">Note:游标转换为真实的数组类型,使用。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/092216391891027.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px">Note:findOne,返回结果集中的第一条数据。limit(3),返回结果集中的前三条数据。</span></p>
<h1><span style="font-family: 宋体; font-size: 18pt">MongoDB中的高级查询</span></h1>
<p><span style="font-family: 宋体; font-size: 15px">面向文档的NoSql数据库重要解决的问题不是高性能的并发读写问题,而是保证海量数据存储的同时,具有比一般数据库更加良好的查询性能。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/131350210167343.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:条件操作符号: &gt; 、 &lt; 、 &gt;= 、&lt;=&nbsp;</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、 $gt //大于 &gt; ,$lt //小于 &lt; ,$gte //大于等于 &gt;= ,$lte //小于等于</span></p>
<p><span style="font-family: 宋体; font-size: 15px">2、{"filed":{$op,value}} &nbsp;//filed字段 ,$op条件操作符号,value值。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">3、{"age":{$gt:1}} : person集合中年龄大于1的所有数据文档</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/131401314382160.jpg" alt=""></p>
<p>&nbsp;<span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:$all匹配所有,类似t-sql中的in,但是t-sql中的in是满足括号里面的任何一个都能出数据,而mongodb中的$all则必须满足[]中的所有值。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、{age:{$all:}}:age数组中只要有7和9就满足条件。如果只有7,没有9则不符合条件。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/131514021415595.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:$exists判断字段是否存在,(true/false)</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、{city:{$exists:true}}: 集合中存在city这个字段的数据</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/131547038132150.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:$mod取模运算。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、{age:{$mod:}}:集合中模7余6的数据</span><br><img src="https://images0.cnblogs.com/blog2015/398358/201507/131550285013885.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:$ne不等于</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/131611370321241.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:$in包含,$nin不包含。跟t-sql中的in,not in一样。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、{age:{$in:}}:如果age是数组的话,只要数组包含in中条件的任何一条数据,都能被检索出来。不是数组,则只要满足in中的任何一个条件数据,也可以被检索出来。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/131618444387665.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:数组元素个数。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、{age:{$size:4}}:age数组元素个数为4的数据结果集。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/131622567351721.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:$not正则匹配,不包含以张开头的数据。</span></p>
<p><img src="https://images0.cnblogs.com/blog2015/398358/201507/131623570639589.jpg" alt=""></p>
<p><span style="font-family: 宋体; font-size: 15px; color: rgba(0, 0, 255, 1)">Note:skip,limit,sort,count</span></p>
<p><span style="font-family: 宋体; font-size: 15px">1、skip(2):从数据集的第二条开始查询</span></p>
<p><span style="font-family: 宋体; font-size: 15px">2、limit(2) : 依次查出2条数据。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">3、sort({age:1}) : 1.正序查询,-1倒叙查询。</span></p>
<p><span style="font-family: 宋体; font-size: 15px">4、count():结果集总数。</span></p><br><br>
来源:https://www.cnblogs.com/knowledgesea/p/4634464.html
頁: [1]
查看完整版本: MongoDB高级查询详细