.......................................................................................
环境:centos7
Ip: 172.16.200.48
..............................................................................................javascript
# cd /usr/local/src/ # wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.3.tgz # tar -zxvf mongodb-linux-x86_64-rhel70-3.4.3.tgz
# vim /etc/profile 添加一下内容: export MONGODB_HOME=/usr/local/mongodb export PATH=$MONGODB_HOME/bin:$PATH
# mongod -v
安装成功。java
# mkdir -p /data/mongodb # mkdir -p /data/mongodb/log # touch /data/logs/mongodb/mongodb.log
新建mongodb.conf配置文件, 经过这个配置文件进行启动.linux
# vim /etc/mongodb.conf 配置文件参数说明: mongodb的参数说明: --dbpath 数据库路径(数据文件) --logpath 日志文件路径 --master 指定为主机器 --slave 指定为从机器 --source 指定主机器的IP地址 --pologSize 指定日志文件大小不超过64M.由于resync是很是操做量大且耗时,最好经过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。 --logappend 日志文件末尾添加 --port 启用端口号 --fork 在后台运行 --only 指定只复制哪个数据库 --slavedelay 指从复制检测的时间间隔 --auth 是否须要验证权限登陆(用户名和密码) 配置文件内容: dbpath=/data/mongodb logpath=/data/logs/mongodb/mongodb.log logappend=true port=27017 fork=true ##auth = true # 先关闭, 建立好用户在启动
# mongod -f /etc/mongodb.conf ##启动
出现successfully表示启动成功了。
说明
MongoDB的启动:
不建议用service mongod start或者chkconfig mongod on来启动MongoDB,由于mongod每次启动须要带参数,否则会形成错误;
建议用mongod命令来启动,先设置好配置文件/etc/mongod.conf后,每次手动用命令启动:mongod -f /etc/mongodb.conf
或者设置开机重启: echo “mongod –f /etc/mongod.conf” >>/etc/rc.d/rc.local
MongoDB的关闭
不建议使用强制关闭MongoDB: service mongod stop
推荐使用:从mongodb的admin中关闭mongodb
> use admin switched to db admin > db.shutdownServer() server should be down...
或者mongod --shutdown
使用shutdownServer关闭MongoDB,若有MongoDB主从服务器,则在服务关闭前同步主从服务器;强制关闭则不会;shell
# cd /usr/local/mongodb/bin # ./mongo
> use test 建立数据库test
使用use DATABASE_NAME建立一个数据库。若是数据库不存在,则建立数据库,不然切换到指定数据库。数据库
[root@snails ~]# ps -ef|grep mongod [root@snails ~]# mongo --host=127.0.0.1 --port=27017 MongoDB shell version: 3.2.7 connecting to: 127.0.0.1:27017/test > show dbs #显示数据库列表 > show collections #显示当前数据库中的集合(相似关系数据库中的表) > show users #显示用户 > use <db name> #切换当前数据库,若是数据库不存在则建立数据库。 > db.help() #显示数据库操做命令,里面有不少的命令 > db.foo.help() #显示集合操做命令,一样有不少的命令,foo指的是当前数据库下,一个叫foo的集合,并不是真正意义上的命令 > 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的数据复制到temp数据库中 > db.repairDatabase() #修复当前数据库 > db.getName() #查看当前使用的数据库,也能够直接用db > db.stats() #显示当前db状态 > db.version() #当前db版本 > db.getMongo() #查看当前db的连接机器地址 > db.serverStatus() #查看数据库服务器的状态
启动mongodb数据库vim
能够查看db当前指向哪一个数据库centos
使用use DATABASE_NAME使用use 数据库名就能够切换全局变量db当前指向的数据库。注意:use操做同时能够建立数据库,若是use+一个不存在的数据库名,则use执行后,MongoDB会建立对应数据库。数组
createCollection() 方法
db.createCollection(name, options)
在命令中, name 是要建立的集合的名称. Options 是一个文件,用于指定配置的集合
删除集合:drop() 方法
db.COLLECTION_NAME.drop() 是用来从数据库中删除一个集合服务器
#建立集合 #进入数据库mongos> use test; mongos> db.createCollection("mycollection") { "ok" : 1 } mongos> show collections; #查看集合 mycollection #删除集合 #进入数据库mongos> use testdb; mongos> show collections; mycollection mongos> db.mycollection.drop(); true mongos> show collections;
MongoDB使用insert()或save()方法向集合中插入文档,语法以下:
db.COLLECTION_NAME.insert(document)
插入文档
> use test switched to db test > 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.[集合名].find( <query>, <projection> ) # > db.user.find({name:"user2"}) ##查询name为user2这条记录 # > db.user.find({name:"user2"},{age:1}); ## 查询name为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批量插入数据。因为mongodb shell简单的说就是一个javascript shell因此javascript代码能够在mongodb shell中运行,因此咱们可使用javascript代码进行批量插入数据,例如咱们插入10个用户到user集合中,代码以下: > for(i=1;i<=10;i++){ ... db.user.insert({_id:i,name:"user"+i,age:10+i}) ... }
#显示集合文档 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" }
#删除文档内容 mongos> db.col.remove({"name":"antian"}); #删除集合:db.col.drop();
mongos> db.col.find({},{"sip":1,_id:0}).limit(2);
降序 mongos> db.col.find({},{"age":1,_id:0}).sort({"age":-1}); 升序 mongos> db.col.find({},{"age":1,_id:0}).sort({"age":1});
mongos> db.col.ensureIndex({"id":1})