mongodb基础操作


官网下载地址:
http://www.mongodb.org/downloads
此次安装版本下载地址:
https://www.mongodb.com/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.7.tgz/download

帮助文档
https://www.runoob.com/mongodb/

数据库管理工具
:https://github.com/iwind/rockmongo

配置文件详解

#日志文件位置
logpath=/data/db/journal/mongodb.log  (这些都是可以自定义修改的)

# 以追加方式写入日志
logappend=true

# 是否以守护进程方式运行
fork = true

# 默认27017
#port = 27017

# 数据库文件位置
dbpath=/data/db

# 启用定期记录CPU利用率和 I/O 等待
#cpu = true

# 是否以安全认证方式运行,默认是不认证的非安全方式
#noauth = true
#auth = true

# 详细记录输出
#verbose = true

# Inspect all client data for validity on receipt (useful for
# developing drivers)用于开发驱动程序时验证客户端请求
#objcheck = true

# Enable db quota management
# 启用数据库配额管理
#quota = true
# 设置oplog记录等级
# Set oplogging level where n is
#   0=off (default)
#   1=W
#   2=R
#   3=both
#   7=W+some reads
#diaglog=0

# Diagnostic/debugging option 动态调试项
#nocursors = true

# Ignore query hints 忽略查询提示
#nohints = true
# 禁用http界面,默认为localhost:28017
#nohttpinterface = true

# 关闭服务器端脚本,这将极大的限制功能
# Turns off server-side scripting.  This will result in greatly limited
# functionality
#noscripting = true
# 关闭扫描表,任何查询将会是扫描失败
# Turns off table scans.  Any query that would do a table scan fails.
#notablescan = true
# 关闭数据文件预分配
# Disable data file preallocation.
#noprealloc = true
# 为新数据库指定.ns文件的大小,单位:MB
# Specify .ns file size for new databases.
# nssize =

# Replication Options 复制选项
# in replicated mongo databases, specify the replica set name here
#replSet=setname
# maximum size in megabytes for replication operation log
#oplogSize=1024
# path to a key file storing authentication info for connections
# between replica set members
#指定存储身份验证信息的密钥文件的路径
#keyFile=/path/to/keyfile
storageEngine=mmapv1 #存储引擎压缩空间

安装

把下载好的tar包放在/usr/local/下面。创建软连接。
原理,解压完后自己创建conf文件,然后用bin下面的mongod启动对应的文件。

cd /usr/local/mongodb/
[root@mongodb ~]# mkdir -p /data/mongodb1
[root@mongodb ~]# mkdir -p /data/logs/mongodb
[root@mongodb ~]# touch /data/logs/mongodb/mongodb1.log
[root@mongodb ~]# cd /usr/local/mongodb/
[root@mongodb mongodb]# ls
bin GNU-AGPL-3.0 MPL-2 README THIRD-PARTY-NOTICES
[root@mongodb mongodb]# mkdir conf
[root@mongodb mongodb]# vim conf/mongodb1.conf
port=27017
dbpath=/data/mongodb1
logpath=/data/logs/mongodb/mongodb1.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
#auth=true    开启密码验证
#bind_ip=192.168.41.101  #绑定ip
#slowms=1  //慢查询日志,超过 1 秒的查询请求将被记录
#profile=1 //0=off,1=slow,2=all
#httpinterface=true  #启用web界面
#rest=true




连接数据库
[root@mongodb mongodb]# /usr/local/mongodb/bin/mongod -f
/usr/local/mongodb/conf/mongodb1.conf // 启动 MongoDB  数据库,-f 

[root@centos mongodb]$ln -sv /usr/local/mongodb/bin/mongo /usr/bin
‘/usr/bin/mongo’ -> ‘/usr/local/mongodb/bin/mongo’
[root@centos mongodb]$mongo
MongoDB shell version v4.0.12
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
show dbs
exit

去除报错
[root@mongodb ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@mongodb ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag


关闭服务器
1)
use admin
db.shutdownServer()
exit

2)
mongod -f /usr/local/mongodb/conf/mongodb1.conf  --shutdown


3)
kill 进程



开启两个实例
[root@centos conf]$cp mongodb1.conf mongodb2.conf 
[root@centos conf]$vim mongodb2.conf 
port=27018
dbpath=/data/mongodb2
logpath=/data/logs/mongodb/mongodb2.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1

[root@mongodb conf]# mkdir /data/mongodb2
[root@mongodb conf]# touch /data/logs/mongodb/mongodb2.log
[root@mongodb conf]# chmod 777 /data/logs/mongodb/mongodb2.log

编写启动脚本
vim mongodb.sh
INSTANCE=$1
ACTION=$2
case "$ACTION" in
'start')
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/"$INSTANCE".conf;;
'stop')
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/"$INSTANCE".conf --shutdown;;
'restart')
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/"$INSTANCE".conf --shutdown
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/"$INSTANCE".conf;;
esac

运行脚本
chmod +x mongodb.sh
sh mongodb.sh mongodb1 start
mongo --host 127.0.0.1:27018   #指定端口登陆


基本命令使用

show dbs  查看当前示例下的数据库列表,等同于 show database
show users  显示用户
use <db_name>  切换当前数据库
db.help()  显示数据库操作命令
show collections  显示当前数据库中的集合,等同于 show tables
db.mycoll.help()  显示集合操作命令,mycoll 是当前下叫做 mycoll 的集合
db.foo.find()  对当前数据库中 foo 集合进行数据查找


use 数据库名字,即使没有也可以登陆

创建一个表
use test
> db.test.insert({"name":"菜鸟教程"})

> show tables 
system.indexes
test

> show collections
system.indexes
test

> db.test.find()  #查看表数据



> help #查看帮助
> db.help() 查看库帮助
> db.stats() 查看状态

#插入数据以及查看,大小写敏感,asc排序。不能以$开头
> db.test.insert({"id":3,"name":"world2"})
WriteResult({ "nInserted" : 1 })

> db.test.find({"id":3})
{ "_id" : ObjectId("5da1f3bcae0cc87bcef128b0"), "id" : 3, "name" : "world2" }

> db.test.findOne({"id":3})
{
	"_id" : ObjectId("5da1f3bcae0cc87bcef128b0"),
	"id" : 3,
	"name" : "world2"
}



关于 null
> db.t1.find({"gender":null});


所有行都被找出来了 ,若要找有 gender  存在的行,需要执行如下命令:
> db.t1.find({"gender":{"$exists":true}});


#删除数据库
use test
> db.dropDatabase()


表基本操作

> use list
> db.list.insert({"id":103,"name":"诸葛亮","age":1000,"dept":" 行政部"})
> db.list.find({"name":"诸葛亮"})
> db.list.update({"name":" 诸葛亮"},{"$set":{"id":150}});
> db.list.find({"name":" 诸葛亮"})
{ "_id" : ObjectId("57845ffc7f59c53a125b77ac"), "id" : 150, "name" : "诸葛亮", "age" : 1000,"dept" : "行政部" }
> db.list.remove({"name":"诸葛亮"})
> db.list.find().sort({age:1}).limit(10) // 排序,按年龄从小到大(-1  为从大到小),前十个
> db.list.find().skip(10).limit(5)  // 跳过前 10  个,然后的 5 

> db.list.find({"age":20})
> db.list.find({"age":20},{"name":1,"age":1})
> db.list.find({"age":{$gt:60}})  // 年龄大于 60 的
> db.list.find({"age":{$lt:20}})  // 年龄小于 20 的
> db.list.find({"age":{$mod:[10,1]}})  // 年龄除以10余1  
> db.list.find({"dept":" 会计部"})
> db.list.find({"dept":{"$in":[" 会计部"," 客服部"]}})
> db.list.find({name:/^ 张/})  以什么开头的
> db.list.find({name:/^[ 张王]/}).sort({name:1})   //姓张或姓王的,按姓名排序
> db.list.find({$or:[{"age":{$gt:60}},{"age":{$lt:20}}]}).sort({age:1})
// 按年龄排序,大于 60  或小于 20
> db.list.distinct("dept")  //distinct 去重

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值