小仙女问事 發表於 2021-8-24 14:32:00

MongoDB基本命令用

<div id="cnblogs_post_body" class="blogpost-body blogpost-body-html">
<p align="left">成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。</p>
<p align="left">输入help可以看到基本操作命令:</p>
<p align="left">show dbs:显示数据库列表&nbsp;<br>
show collections:显示当前数据库中的集合(类似关系数据库中的表)&nbsp;<br>
show users:显示用户</p>
<p align="left">use &lt;db name&gt;:切换当前数据库,这和MS-SQL里面的意思一样&nbsp;<br>
db.help():显示数据库操作命令,里面有很多的命令&nbsp;<br>
db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令&nbsp;<br>
db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)&nbsp;<br>
db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1</p>
<p align="left">MongoDB没有创建数据库的命令,但有类似的命令。</p>
<p align="left">如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库。</p>
<p align="left">数据库常用命令</p>
<p align="left">1、Help查看命令提示</p>
<p align="left">&nbsp;help</p>
<p align="left">&nbsp; db.help();</p>
<p align="left">&nbsp; db.yourColl.help();</p>
<p align="left">&nbsp; db.youColl.find().help();</p>
<p align="left">&nbsp; rs.help();</p>
<p align="left">2、切换/创建数据库</p>
<p align="left">&nbsp;use yourDB;&nbsp;&nbsp;当创建一个集合(table)的时候会自动创建当前数据库</p>
<p align="left">3、查询所有数据库</p>
<p align="left">&nbsp;show dbs;</p>
<p align="left">4、删除当前使用数据库</p>
<p align="left">&nbsp;db.dropDatabase();</p>
<p align="left">5、从指定主机上克隆数据库</p>
<p align="left">&nbsp;db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库</p>
<p align="left">6、从指定的机器上复制指定数据库数据到某个数据库</p>
<p align="left">&nbsp;db.copyDatabase("mydb", "temp",
"127.0.0.1");将本机的mydb的数据复制到temp数据库中</p>
<p align="left">7、修复当前数据库</p>
<p align="left">&nbsp;db.repairDatabase();</p>
<p align="left">8、查看当前使用的数据库</p>
<p align="left">&nbsp;db.getName();</p>
<p align="left">&nbsp;db; db和getName方法是一样的效果,都可以查询当前使用的数据库</p>
<p align="left">9、显示当前db状态</p>
<p align="left">&nbsp;db.stats();</p>
<p align="left">10、当前db版本</p>
<p align="left">&nbsp;db.version();</p>
<p align="left">11、查看当前db的链接机器地址</p>
<p align="left">&nbsp;db.getMongo();</p>
<p align="left">Collection聚集集合</p>
<p align="left">1、创建一个聚集集合(table)</p>
<p align="left">&nbsp;db.createCollection(“collName”, {size: 20, capped: 5, max: 100});</p>
<p align="left">2、得到指定名称的聚集集合(table)</p>
<p align="left">&nbsp;db.getCollection("account");</p>
<p align="left">3、得到当前db的所有聚集集合</p>
<p align="left">&nbsp;db.getCollectionNames();</p>
<p align="left">4、显示当前db所有聚集索引的状态</p>
<p align="left">&nbsp;db.printCollectionStats();</p>
<p align="left">&nbsp;用户相关</p>
<p align="left">1、添加一个用户</p>
<p align="left">&nbsp;db.addUser("name");</p>
<p align="left">&nbsp;db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读</p>
<p align="left">2、数据库认证、安全模式</p>
<p align="left">&nbsp;db.auth("userName", "123123");</p>
<p align="left">3、显示当前所有用户</p>
<p align="left">&nbsp;show users;</p>
<p align="left">4、删除用户</p>
<p align="left">&nbsp;db.removeUser("userName");</p>
<p align="left">其他</p>
<p align="left">1、查询之前的错误信息</p>
<p align="left">&nbsp;db.getPrevError();</p>
<p align="left">2、清除错误记录</p>
<p align="left">&nbsp;db.resetError();</p>
<p align="left">&nbsp;</p>
<p align="left">查看聚集集合基本信息</p>
<p align="left">1、查看帮助&nbsp; db.yourColl.help();</p>
<p align="left">2、查询当前集合的数据条数&nbsp; db.yourColl.count();</p>
<p align="left">3、查看数据空间大小
db.userInfo.dataSize();</p>
<p align="left">4、得到当前聚集集合所在的db
db.userInfo.getDB();</p>
<p align="left">5、得到当前聚集的状态
db.userInfo.stats();</p>
<p align="left">6、得到聚集集合总大小
db.userInfo.totalSize();</p>
<p align="left">7、聚集集合储存空间大小
db.userInfo.storageSize();</p>
<p align="left">8、Shard版本信息&nbsp; db.userInfo.getShardVersion()</p>
<p align="left">9、聚集集合重命名
db.userInfo.renameCollection("users"); 将userInfo重命名为users</p>
<p align="left">10、删除当前聚集集合
db.userInfo.drop();</p>
<p align="left">聚集集合查询</p>
<p align="left">1、查询所有记录</p>
<p align="left">db.userInfo.find();</p>
<p align="left">相当于:select* from userInfo;</p>
<p align="left">默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”</p>
<p align="left">但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。</p>
<p align="left">&nbsp;</p>
<p align="left">2、查询去掉后的当前聚集集合中的某列的重复数据</p>
<p align="left">db.userInfo.distinct("name");</p>
<p align="left">会过滤掉name中的相同数据</p>
<p align="left">相当于:select distict name from userInfo;</p>
<p align="left">&nbsp;</p>
<p align="left">3、查询age = 22的记录</p>
<p align="left">db.userInfo.find({"age": 22});</p>
<p align="left">相当于: select * from userInfo where age = 22;</p>
<p align="left">&nbsp;</p>
<p align="left">4、查询age &gt; 22的记录</p>
<p align="left">db.userInfo.find({age: {$gt: 22}});</p>
<p align="left">相当于:select * from userInfo where age &gt;22;</p>
<p align="left">&nbsp;</p>
<p align="left">5、查询age &lt; 22的记录</p>
<p align="left">db.userInfo.find({age: {$lt: 22}});</p>
<p align="left">相当于:select * from userInfo where age &lt;22;</p>
<p align="left">&nbsp;</p>
<p align="left">6、查询age &gt;= 25的记录</p>
<p align="left">db.userInfo.find({age: {$gte: 25}});</p>
<p align="left">相当于:select * from userInfo where age &gt;= 25;</p>
<p align="left">&nbsp;</p>
<p align="left">7、查询age &lt;= 25的记录</p>
<p align="left">db.userInfo.find({age: {$lte: 25}});</p>
<p align="left">&nbsp;</p>
<p align="left">8、查询age &gt;= 23 并且 age &lt;= 26</p>
<p align="left">db.userInfo.find({age: {$gte: 23, $lte: 26}});</p>
<p align="left">&nbsp;</p>
<p align="left">9、查询name中包含 mongo的数据</p>
<p align="left">db.userInfo.find({name: /mongo/});</p>
<p align="left">//相当于%%</p>
<p align="left">select * from userInfo where name like ‘%mongo%’;</p>
<p align="left">&nbsp;</p>
<p align="left">10、查询name中以mongo开头的</p>
<p align="left">db.userInfo.find({name: /^mongo/});</p>
<p align="left">select * from userInfo where name like ‘mongo%’;</p>
<p align="left">&nbsp;</p>
<p align="left">11、查询指定列name、age数据</p>
<p align="left">db.userInfo.find({}, {name: 1, age: 1});</p>
<p align="left">相当于:select name, age from userInfo;</p>
<p align="left">当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。</p>
<p align="left">&nbsp;</p>
<p align="left">12、查询指定列name、age数据, age &gt; 25</p>
<p align="left">db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});</p>
<p align="left">相当于:select name, age from userInfo where age &gt;25;</p>
<p align="left">&nbsp;</p>
<p align="left">13、按照年龄排序</p>
<p align="left">升序:db.userInfo.find().sort({age: 1});</p>
<p align="left">降序:db.userInfo.find().sort({age: -1});</p>
<p align="left">&nbsp;</p>
<p align="left">14、查询name =
zhangsan, age = 22的数据</p>
<p align="left">db.userInfo.find({name: 'zhangsan', age: 22});</p>
<p align="left">相当于:select * from userInfo where name = ‘zhangsan’ and
age = ‘22’;</p>
<p align="left">&nbsp;</p>
<p align="left">15、查询前5条数据</p>
<p align="left">db.userInfo.find().limit(5);</p>
<p align="left">相当于:selecttop 5 * from userInfo;</p>
<p align="left">&nbsp;</p>
<p align="left">16、查询10条以后的数据</p>
<p align="left">db.userInfo.find().skip(10);</p>
<p align="left">相当于:select * from userInfo where id not in (</p>
<p align="left">selecttop 10 * from userInfo</p>
<p align="left">);</p>
<p align="left">&nbsp;</p>
<p align="left">17、查询在5-10之间的数据</p>
<p align="left">db.userInfo.find().limit(10).skip(5);</p>
<p align="left">可用于分页,limit是pageSize,skip是第几页*pageSize</p>
<p align="left">&nbsp;</p>
<p align="left">18、or与 查询</p>
<p align="left">db.userInfo.find({$or: [{age: 22}, {age: 25}]});</p>
<p align="left">相当于:select * from userInfo where age = 22 or age = 25;</p>
<p align="left">&nbsp;</p>
<p align="left">19、查询第一条数据</p>
<p align="left">db.userInfo.findOne();</p>
<p align="left">相当于:selecttop 1 * from userInfo;</p>
<p align="left">db.userInfo.find().limit(1);</p>
<p align="left">&nbsp;</p>
<p align="left">20、查询某个结果集的记录条数</p>
<p align="left">db.userInfo.find({age: {$gte: 25}}).count();</p>
<p align="left">相当于:select count(*) from userInfo where age &gt;= 20;</p>
<p align="left">如果要返回限制之后的记录数量,要使用count(true)或者count(非0) <br>
db.users.find().skip(10).limit(5).count(true);</p>
<p align="left">&nbsp;</p>
<p align="left">21、按照某列进行排序</p>
<p align="left">db.userInfo.find({sex: {$exists: true}}).count();</p>
<p align="left">相当于:select count(sex) from userInfo;</p>
<p align="left">索引</p>
<p align="left">1、创建索引</p>
<p align="left">db.userInfo.ensureIndex({name: 1});</p>
<p align="left">db.userInfo.ensureIndex({name: 1, ts: -1});</p>
<p align="left">&nbsp;</p>
<p align="left">2、查询当前聚集集合所有索引</p>
<p align="left">db.userInfo.getIndexes();</p>
<p align="left">&nbsp;</p>
<p align="left">3、查看总索引记录大小</p>
<p align="left">db.userInfo.totalIndexSize();</p>
<p align="left">&nbsp;</p>
<p align="left">4、读取当前集合的所有index信息</p>
<p align="left">db.users.reIndex();</p>
<p align="left">&nbsp;</p>
<p align="left">5、删除指定索引</p>
<p align="left">db.users.dropIndex("name_1");</p>
<p align="left">&nbsp;</p>
<p align="left">6、删除所有索引索引</p>
<p align="left">db.users.dropIndexes();</p>
<p align="left">&nbsp;修改、添加、删除集合数据</p>
<p align="left">1、添加</p>
<p align="left">db.users.save({name: ‘zhangsan’, age: 25, sex: true});</p>
<p align="left">添加的数据的数据列,没有固定,根据添加的数据为准</p>
<p align="left">&nbsp;</p>
<p align="left">2、修改</p>
<p align="left">db.collection.update(criteria, objNew, upsert, multi )</p>
<p align="left">criteria:update的查询条件,类似sql update查询内where后面的</p>
<p align="left">objNew:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的。</p>
<p align="left">upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。</p>
<p align="left">multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。</p>
<p align="left">&nbsp;</p>
<p align="left">db.users.update({age: 25}, {$set: {name: 'changeName'}},
false, true);</p>
<p align="left">相当于:update users set name = ‘changeName’ where age = 25;</p>
<p align="left">&nbsp;</p>
<p align="left">db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false,
true);</p>
<p align="left">相当于:update users set age = age + 50 where name = ‘Lisi’;</p>
<p align="left">&nbsp;</p>
<p align="left">db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set:
{name: 'hoho'}}, false, true);</p>
<p align="left">相当于:update users set age = age + 50, name = ‘hoho’ where
name = ‘Lisi’;</p>
<p align="left">&nbsp;</p>
<p align="left">3、删除</p>
<p align="left">db.users.remove({age: 132});</p>
<p align="left">&nbsp;</p>
<p align="left">4、查询修改删除</p>
<p align="left">db.users.findAndModify({</p>
<p align="left">&nbsp;&nbsp;&nbsp; query: {age:
{$gte: 25}}, </p>
<p align="left">&nbsp;&nbsp;&nbsp; sort: {age:
-1}, </p>
<p align="left">&nbsp;&nbsp;&nbsp; update: {$set:
{name: 'a2'}, $inc: {age: 2}},</p>
<p align="left">&nbsp;&nbsp;&nbsp; remove: true</p>
<p align="left">});</p>
<p align="left">&nbsp;</p>
<p align="left">db.runCommand({ findandmodify : "users", </p>
<p align="left">&nbsp;&nbsp;&nbsp; query: {age:
{$gte: 25}}, </p>
<p align="left">&nbsp;&nbsp;&nbsp; sort: {age:
-1}, </p>
<p align="left">&nbsp;&nbsp;&nbsp; update: {$set:
{name: 'a2'}, $inc: {age: 2}},</p>
<p align="left">&nbsp;&nbsp;&nbsp; remove: true</p>
<p align="left">});</p>
<p align="left">&nbsp;</p>
<p align="left">https://www.cnblogs.com/liyonghui/p/mongodb.html</p>
<p align="left">&nbsp;</p>


</div><br><br>
来源:https://www.cnblogs.com/seasonzone/p/15180185.html
頁: [1]
查看完整版本: MongoDB基本命令用