当前位置: 首页 > 科技观察

MongoDB安装及常用操作命令

时间:2023-03-13 07:15:59 科技观察

环境:centos7Ip:172.16.200.48................................................................................................................一、Mongodb的安装与启动一、Mongo的安装步骤1、下载地址:#cd/usr/local/src/#wgethttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4。3.tgz#tar-zxvfmongodb-linux-x86_64-rhel70-3.4.3.tgz第二步,配置环境变量#vim/etc/profile添加内容:exportMONGODB_HOME=/usr/local/mongodbexportPATH=$MONGODB_HOME/bin:$PATHStep3.查看mongodb版本信息#mongod-v安装成功。2、Mongo启动步骤4、创建数据库目录(MongoDB需要自己建立数据库文件夹)#mkdir-p/data/mongodb#mkdir-p/data/mongodb/log#touch/data/logs/mongodb/mongodb。logStep5.Addaconfigurationfile新建一个mongodb.conf配置文件,通过这个配置文件启动。#vim/etc/mongodb.conf配置文件参数说明:mongodb参数说明:--dbpath数据库路径(数据文件)--logpath日志文件路径--master指定为主机--slave指定为从机--source指定master机器的IP地址--pologSize指定日志文件大小不超过64M。因为重新同步非常繁重且耗时,***通过设置足够大的oplogSize(默认oplog大小是可用磁盘大小的5%)来避免重新同步。--logappend在日志文件末尾添加--port使端口号可用--fork后台运行--only指定只复制哪个数据库--slavedelay指从复制检测开始的时间间隔--auth是否需要认证权限登录(用户名和密码)配置文件内容:dbpath=/data/mongodblogpath=/data/logs/mongodb/mongodb.loglogappend=trueport=27017fork=true##auth=true#先关闭,创建一个gooduser在启动第6步,通过配置文件启动#mongod-f/etc/mongodb.conf##Startupsuccessfully出现,说明启动成功。解释MongoDB的启动:不建议用servicemongodstart或chkconfigmongodon来启动MongoDB,因为mongod每次都需要带参数启动,否则会报错;建议使用mongod命令启动,先设置配置文件/etc/mongod.confconf之后,每次手动启动命令:mongod-f/etc/mongodb.conf或者设置重启:echo"mongod–f/etc/mongod.conf">>/etc/rc.d/rc.localMongoDBshutdown不推荐使用强制关闭MongoDB:servicemongodstop推荐使用:Close>useadminswitchedtodbadmin>db.shutdownServer()servershouldbedownfrommongodb'sadmin...或者mongod--shutdown使用shutdownServer关闭MongoDB,如果有一个MongoDB主从服务器,然后在服务关闭前同步主从服务器;如果它被强制关闭,它不会;step7,进入mongodb的后台管理shell#cd/usr/local/mongodb/bin#./mongostep8,创建数据库>usetest创建数据库testuseuseDATABASE_NAME创建数据库。如果数据库不存在,则创建数据库,否则切换到指定的数据库。2、Mongo常用命令[root@snails~]#ps-ef|grepmongod[root@snails~]#mongo--host=127.0.0.1--port=27017MongoDBshellversion:3.2.7connectingto:127.0.0.1:27017/test>showdbs#显示数据库列表>showcollections#显示当前数据库中的集合(类似于关系数据库中的表)>showusers#显示用户>use#切换当前数据库,如果数据库不存在,创建数据库。>db.help()#显示数据库操作命令,里面有很多命令>db.foo.help()#显示集合操作命令,也有很多命令,foo是指当前数据库下一个名为foo的集合,notarealcommand>db.foo.find()#对当前数据库中的foo集合进行数据查找(因为没有条件,所以会列出所有数据)>db.foo.find({a:1})#在当前数据库中查找foo集合,条件是数据中有一个属性叫a,a的值为1>db.dropDatabase()#删除当前使用的数据库>db.cloneDatabase("127.0.0.1")#将指定机器上数据库的数据克隆到当前数据库>db.copyDatabase("mydb","temp","127.0.0.1")#将本地mydb的数据复制到tempdatabase>db.repairDatabase()#修复当前数据库>db.getName()#查看当前使用的数据库,或者直接使用db>db.stats()#显示当前db状态>db.version()#当前db版本>db.getMongo()#查看当前db的链接机器地址>db.serverStatus()#查看数据库服务器状态3.Shell中的基本操作:添加、删除,修改并查看1.#mongo启动mongodb数据库2.>db可以查看db当前指向哪个数据库3.进入数据库>usetest;useuseDATABASE_NAME和usedatabasename切换全局变量db当前指向的数据库。注意:use操作也可以创建数据库。如果use+一个不存在的数据库名,执行完use后MongoDB会创建对应的数据库。4.查询数据库>showdbs;(要显示数据库必须至少插入一个文件)5.删除数据库>db.dropDatabase();6、创建和删除集合命令中的createCollection()方法db.createCollection(name,options),name为要创建的集合名称。Options是一个文件,用来指定collection的配置来删除collection:drop()方法db.COLLECTION_NAME.drop()用来从数据库中删除一个collection#createcollection#enterthedatabasemongos>usetest;mongos>db.createCollection("mycollection"){"ok":1}mongos>showcollections;#查看collectionmycollection#deletecollection#enterdatabasemongos>usetestdb;mongos>showcollections;mycollectionmongos>db.mycollection.drop();truemongos>showcollections;7.插入文档MongoDB使用insert()或save()方法向集合中插入文档,语法如下:db.COLLECTION_NAME.insert(document)insertdocuments>usetestswitchedtodbtest>db.col.insert({name:'morris',age:22})WriteResult({"nInserted":1})在上面的例子中,col是集合名称。如果集合在数据库中不存在,MongoDB会自动创建集合并插入文档。查看插入的文件>db.col.find(){"_id":ObjectId("56e12c22de2a8692a3099065"),"name":"morris","age":22}当我们插入文件的时候,如果没有文件指定_id,mongodb会自动为我们的文档创建一个不重复的ObjectId条件查询已经插入文档db.[collectionname].find(,)#>db.user.find({name:"user2"})##查询名为user2的记录#>db.user.find({name:"user2"},{age:1});##查询名为user2的记录的age字段记录的定义变量插入文档>doc={name:'jack',age:20}{"name":"jack","age":20}>db.col.insert(doc)WriteResult({"nInserted":1})>db.col.find(){"_id":ObjectId("56e12c22de2a8692a3099065"),"name":"morris","age":22}{"_id":ObjectId("56e12f49de2a8692a3099068"),"name":"jack","age":20}插入文档也可以使用db.col.save(document)命令。如果不指定_id字段,save()方法类似于insert()方法。如果指定了_id字段,则该_id的数据将被更新。插入多个文档如果我们在insert中传入多个文档,mongodb只会插入第一个文档,下面的代码中只会插入第一个文档。>db.user.find()>db.user.insert({name:"user1"},{name:"user2"})>db.user.find(){"_id":ObjectId("519cd757f83727a8baf0a8e2"),"name":"user1"}如果我们想一次插入多个文档,可以将多个文档组合成一个数组,这样就可以插入成功。示例代码如下:>db.user.find()>db.user.insert([{name:"user1"},{name:"user2"}])>db.user.find(){"_id":ObjectId("519cd842f83727a8baf0a8e3"),"name":"user1"}{"_id":ObjectId("519cd842f83727a8baf0a8e4"),"name":"user2"}我们可以使用javascript批量插入数据。由于mongodbshell只是一个javascriptshell,javascript代码可以在mongodbshell中运行,所以我们可以使用javascript代码批量插入数据。例如,我们向用户集合中插入10个用户。代码如下:>for(i=1;i<=10;i++){...db.user.insert({_id:i,name:"user"+i,age:10+i})...}8.更新文档#显示集合文档mongos>db.col.find();{"_id":ObjectId("55113e5477eaee1608881c84"),"name":"antian"}#更新文档mongos>db.col.update({"name":"antian"},{"name":"wuhan"});#显示集合文档mongos>db.col.find();{"_id":ObjectId("55113e5477eaee1608881c84"),"name":"wuhan"}9.删除文档#删除文档内容mongos>db.col.remove({"name":"antian"});#删除集合:db.col.drop();10.限制记录mongos>db.col.find({},{"sip":1,_id:0}).limit(2);11.按降序排列文档mongos>db.col.find({},{"age":1,_id:0}).sort({"age":-1});升序mongos>db.col.find({},{"age":1,_id:0}).sort({"age":1});12.创建索引mongos>db.col.ensureIndex({"id":1})