Ubuntu安装MongoDB 3.2.20&常用命令

Ubuntu安装MongoDB 3.2.20&常用命令

Ubuntu安装MongoDB 3.2.20&常用命令:https://blog.csdn.net/sunny05296/article/details/73131274
Centos7安装MongoDB 4.0.10: https://blog.csdn.net/sunny05296/article/details/100546996
Centos7安装MongoDB 3.2.20: https://blog.csdn.net/sunny05296/article/details/85298086

本文描述Ubuntu通过apt-get install方式安装mongodb。

Centos以tgz解压方式安装mongodb可以参考:https://blog.csdn.net/sunny05296/article/details/85298086

查看软件包
# apt-cache show mongodb
安装
# apt-get install -y mongodb
安装完以后,会自动启动可以通过下面目录插件进程:
# pgrep mongod -l

# ps -ef | grep mongod

修改配置文件,设置远程访问,修改监听IP
vim /etc/mongodb.conf 
bind_ip = 0.0.0.0

默认监听端:0.0.0.0:27017,无认证,任何人都可以连接。
默认情况下,mongod也是没有管理员账户的。因此除非你在admin数据库中使用db.addUser()命令添加了管理员帐号,且使用–auth参数启动mongod,否则在数据库中任何人都可以无需认证执行所有命令。包括delete和shutdown。
此外,mongod还会默认监听28017端口,同样是绑定所有ip。这是一个mongod自带的web监控界面。从中可以获取到数据库当前连接、log、状态、运行系统等信息。如果你开启了–rest参数,甚至可以直接通过web界面查询数据,执行mongod命令。

mongodb有两种用户:admin用户和特定数据库用户。admin用户拥有最高的权限,而特定数据库用户则只能访问特定的数据库。

当mongodb的admin库里没有任何用户的时候,也就是说整个mongodb没有一个mongodb用户的时候,即便–auth权限需求打开了,用户还是可以通过localhost界面进入mongodb进行用户设置,否则的话整个mongodb就完全没法访问了。而当这个用户创建完成之后,之后的用户登录和操作就需要授权了,不是直接登录就能使用的了。
mongodb使用时要注意,即便是一个admin用户,授权也必须在admin数据库下进行,而不能在其他数据库下进行。而授权之后admin用户就可以在任何数据库下进行任何操作了。当然数据库级别的用户在他自己的数据库下授权之后是不能到其他数据库进行操作的。

配置文件mongod.conf中的常用配置参数
dbpath = /data/mongodb
logpath = /data/mongodb/mongodb.log
logappend = true
port = 27017
fork = true
auth = true

启动&关闭mongodb
# service mongodb stop
# service mongodb start
安装以后是默认启动的

卸载mongodb
停止服务、删除程序文件、删除数据文件和日志文件的目录
# service mongod stop
# apt-get purge mongodb-org*
# rm -r /var/log/mongodb 
# rm -r /var/lib/mongodb

连接mongodb
# mongo 127.0.0.1:27017

数据数据库
# mongo

常用数据库命令

查看数据库
> show dbs
admin和local为系统默认内置数据库

添加用户
> db.addUser('root','1q2w3e')

创建用户和远程访问
创建管理员
> db.createUser({user: "root",pwd: "1q2w3e",roles: [ "readWrite", "dbAdmin" ]});

查看当前数据库下的所有表
> use admin
> show collections

MongoDB默认设置为无权限访问限制,我们需要先把它设置成为需要权限访问
在mongodb路径的bin目录下,执行
# mongod --dbpath  /mydata/mongodb/db  --auth 

给某个数据库添加用户访问权限
> db.addUser('testuser','pwd')
> db.auth('testuser','pwd')

删除用户
> db.removeUser('testuser')

修改绑定IP
# vi /etc/mongod.conf 

开启mongodb防火墙端口
# 省略

改变mongodb的数据存储和日志路径
mongodb安装以后,默认数据文件:/var/lib/mongodb 日志文件:/var/log/mongodb
mkdir -p /mydata/mongodb/data
mkdir -p /mydata/mongodb/log

修改mongodb的配置文件:mongod.conf
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /mydata/mongodb/data
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /mydata/mongodb/log/mongod.log

# network interfaces
net:
  port: 27017
  #bindIp: 127.0.0.1

指定配置文件启动:
# mongod -f /mydata/mongodb/mongod.conf &

创建数据库
如果没有mydb数据库的话,直接执行下面命令,会创建数据库
> use mydb
查看数据库
> show dbs
命令检查当前数据库状态
> db.stats()

####

帮助
> db.test01.help()

创建表
> db.createCollection("test01")
> db.createCollection("test02",{capped:true, size:10000}) { "ok" : 1 }

修改数据表名
> db.test01.renameCollection("mytest01")

查看所有记录
> db.test01.find()

查询一条记录
> db.test01.findOne()

查询聚集中UserName包含“keyword”关键字的记录
> db.test01.find({"UserName":/keyword/})

查询聚集中UserName以"keyword" 开头的记录
> db.test01.find({"UserName":/^keyword/})

查询聚集中指定列
> db.test01.find({},{"UserName":1,"Email":1})    --1:true

查询聚集中排除指定列
> db.test01.find({},{"UserName":0})    --0:false

查询聚集中指定列,且Age > 20
> db.test01.find({"Age":{"$gt":20}},{"UserName":1,"Email":1})

常用排序查询
> db.test01.find().sort({"UserName":1}) -- 升序
> db.test01.find().sort({"UserName":-1}) --降序

查询总记录条数
> db.test01.find().count()
> db.test01.find({"Age":{"$gt":20}}).count()

插入新记录
db.test01.insert({ID:1,UserName:"Frank",info:"China",Age:15,Email:"test@test.com",CreateDate:"2017-06-05 14:36:95"})
db.test01.insert({ID:2,UserName:"Lucy",info:"China",Age:16,Email:"test2@test.com",CreateDate:"2017-06-05 15:36:95"})

删除指定的记录
db.test01.remove({ID:2})
注意:remove删除表中的记录,删除是永久性的,不能撤销

删除connection的所有记录
db.test01.remove()
不指定参数,删除所有记录

删除指定的connection
db.test01.drop() --删除test01

remove和drop的区别:
remove将connection的文档删除,但不删除connection自身,也不删除connection的索引。
drop不仅删除connection的文档,也会删除connection自身,同时也会删除在connection上创建的索引。

删除当前数据库

use mytestdb

db.dropDatabase()

show dbs

插入一条较长的记录(较长的字符串值)

插入一个包含8M(8388608字节)的字符串的字段的记录:
for(var i=1, j="a"; i<=8388608; i++){
  j=j+"a"
  if(i==8388608) {
  db.table8m.insert({ID:5,name:"Jack",info:j,CreateDate:"2017-08-24 16:35:08"})
  }
}

> for(var i=1, j="a"; i<=8388608; i++){
...   j=j+"a"
...   if(i==8388608) {
...   db.table8m.insert({ID:5,name:"Jack",info:j,CreateDate:"2017-08-24 16:35:08"})
...   }
... }
WriteResult({ "nInserted" : 1 })


插入一个包含15M的字符串的字段的记录:
for(var i=1, j="a"; i<=15728640; i++){
  j=j+"a"
  if(i==15728640) {
  db.table01.insert({ID:1,name:"test16m",info:j,CreateDate:"2017-08-24 16:35:08"})
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值