Docker 安装 MongoDB
<h3>1、查看可用的 MongoDB 版本</h3><p>访问 MongoDB 镜像库地址: https://hub.docker.com/_/mongo?tab=tags&page=1。</p>
<h3>2、取最新版的 MongoDB 镜像</h3>
<p>这里我们拉取官方的最新版本的镜像:</p>
<div class="cnblogs_code">
<pre>$ docker pull mongo:latest</pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1049564/202105/1049564-20210524182415264-1042351364.png"></p>
<h3>3、查看本地镜像</h3>
<p>使用以下命令来查看是否已安装了 mongo:</p>
<div class="cnblogs_code">
<pre>$ docker images</pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1049564/202105/1049564-20210524182536657-127888903.png"></p>
<p> </p>
<p> </p>
<h3>4、运行容器</h3>
<p>安装完成后,我们可以使用以下命令来运行 mongo 容器:</p>
<div class="cnblogs_code">
<pre>$ docker run -itd <span style="color: rgba(0, 128, 0, 1)">--</span><span style="color: rgba(0, 128, 0, 1)">name mongo -p 27017:27017 mongo --auth</span></pre>
</div>
<p>参数说明:</p>
<ul>
<li><strong>-p 27017:27017</strong> :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。</li>
<li><strong>--auth</strong>:需要密码才能访问容器服务。</li>
</ul>
<p> <img src="https://img2020.cnblogs.com/blog/1049564/202105/1049564-20210524182634253-1729100364.png"></p>
<p> </p>
<p> </p>
<h3>5、安装成功</h3>
<p>最后我们可以通过 <strong>docker ps</strong> 命令查看容器的运行信息:</p>
<p><img src="https://img2020.cnblogs.com/blog/1049564/202105/1049564-20210524182657540-2023711864.png"></p>
<p> </p>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">接着使用以下命令添加用户和设置密码,并且尝试连接。
$ docker exec </span>-<span style="color: rgba(0, 0, 0, 1)">it mongo mongo admin
</span># 创建一个名为 admin,密码为 <span style="color: rgba(128, 0, 128, 1)">123456</span><span style="color: rgba(0, 0, 0, 1)"> 的用户。
</span>>db.createUser({ user:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>,pwd:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">123456</span><span style="color: rgba(128, 0, 0, 1)">'</span>,roles:[ { role:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">userAdminAnyDatabase</span><span style="color: rgba(128, 0, 0, 1)">'</span>, db: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>},<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">readWriteAnyDatabase</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, 0, 1)"> 尝试使用上面创建的用户信息进行连接。
</span>> db.auth(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">admin</span><span style="color: rgba(128, 0, 0, 1)">'</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">123456</span><span style="color: rgba(128, 0, 0, 1)">'</span>)</pre>
</div>
<p><img src="https://img2020.cnblogs.com/blog/1049564/202105/1049564-20210524182808442-15080178.png"></p>
<p> </p>
<h3>6、MongoDB数据库基本用法</h3>
<p> 用户相关</p>
<p>1、添加一个用户</p>
<p>use admin <br>db.createUser(<br>{<br> user: "admin",<br> pwd: "admin", <br>roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]<br>})</p>
<p>2、数据库认证、安全模式</p>
<p> db.auth("userName", "123123");</p>
<p>3、显示当前所有用户</p>
<p> show users;</p>
<p>4、删除用户</p>
<p> db.removeUser("userName");</p>
<p>show dbs:显示数据库列表 <br>show collections:显示当前数据库中的集合(类似关系数据库中的表) <br>show users:显示用户<br>use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 <br>db.help():显示数据库操作命令,里面有很多的命令 <br>db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 <br>db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) <br>db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1<br>MongoDB没有创建数据库的命令,但有类似的命令。<br>如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库。<br>数据库常用命令</p>
<p>1、Help查看命令提示<br> db.help();</p>
<p>2、切换/创建数据库<br> use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库<br>3、查询所有数据库<br> show dbs;<br>4、删除当前使用数据库<br> db.dropDatabase();<br>5、从指定主机上克隆数据库<br> db.copyDatabase(“127.0.0.1”); 将指定机器上的数据库的数据复制到当前数据库<br>6、从指定的机器上复制指定数据库数据到某个数据库<br> db.copyDatabase("product_test_db", "test_db", "172.20.65.151");将远程172.20.65.151服务器中product_test_db数据库的数据复制到本机test_db数据库中<br>7、修复当前数据库<br> db.repairDatabase();<br>8、查看当前使用的数据库<br> db.getName();<br> db; db和getName方法是一样的效果,都可以查询当前使用的数据库<br>9、显示当前db状态<br> db.stats();<br>10、当前db版本<br> db.version();<br>11、查看当前db的链接机器地址<br> db.getMongo();</p>
<p>collection集合</p>
<p>1、创建一个聚集集合(table)</p>
<p> db.createCollection(“collName”);</p>
<p>2、得到指定名称的聚集集合(table)</p>
<p> db.getCollection("account");</p>
<p>3、得到当前db的所有聚集集合</p>
<p> db.getCollectionNames();</p>
<p>show collections;</p>
<p>4、显示当前db所有聚集索引的状态</p>
<p> db.printCollectionStats();</p>
<p>查看集合基本信息</p>
<p>1、查看帮助 db.yourColl.help();</p>
<p>2、查询当前集合的数据条数 db.yourColl.count();</p>
<p>3、查看数据空间大小 db.userInfo.dataSize();</p>
<p>4、得到当前聚集集合所在的db db.userInfo.getDB();</p>
<p>5、得到当前聚集的状态 db.userInfo.stats();</p>
<p>6、得到聚集集合总大小 db.userInfo.totalSize();</p>
<p>7、聚集集合储存空间大小 db.userInfo.storageSize();</p>
<p>8、Shard版本信息 db.userInfo.getShardVersion()</p>
<p>9、聚集集合重命名 db.userInfo.renameCollection("users"); 将userInfo重命名为users</p>
<p>10、删除当前聚集集合 db.userInfo.drop();</p>
<p> </p>
<p>update详解:</p>
<p>db.collection.update( criteria, objNew, upsert, multi )</p>
<p>criteria : update的查询条件,类似sql update查询内where后面的<br>objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的<br>upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。<br>multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。</p>
<p>例:<br>db.test0.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条记录<br>db.test0.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 全更新了<br>db.test0.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 只加进去了第一条<br>db.test0.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全加进去了<br>db.test0.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );全更新了<br>db.test0.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );只更新了第一条</p><br><br>
来源:https://www.cnblogs.com/mumuda/p/14805665.html
頁:
[1]