linux中mongodb的安装配置及基础使用

mongodb安装包下载链接:https://pan.baidu.com/s/176Gwq4vyczKFIX2T6zaEKA  提取码:ns7l 

一:安装mongodb

1:将压缩包上传至指定目录下(我是创建了一个/mongodb目录)

2:tar -zxvf mongodb-linux-x86_64-4.0.13.tgz

3:mkdir /mongodb/data /mongodb/logs /mongodb/etc   分别为存放数据的目录,日志目录,配置文件目录

4:touch /mongodb/logs/mongodb.log  创建mongodb的日志空文件

5:vi /mongodb/etc/mongodb.conf   添加如下内容

#数据库路径
dbpath=/mongodb/data
#日志输出路径
logpath=/mongodb/logs/mongodb.log
#错误日志采用追加模式
logappend=true
#启用日志文件,默认启用
journal=true
#过滤无用的日志信息,false为调试使用
quiet=true
#默认端口号
port=27017
#允许远程访问
bind_ip=0.0.0.0
#开启子进程
fork=true
#开启认证(暂时先不开启)
#auth=true

6:将mongodb服务加入环境变量

vi /etc/profile  添加如下内容

export PATH=$PATH:/mongodb/mongodb-linux-x86_64-4.0.13/bin

7:保存退出使之生效 source /etc/profile

二:启动mongodb服务

1:在任意目录下执行  mongod --config /mongodb/etc/mongodb.conf

2:查看mongod进程在不在  ps -ef|grep mongod

     查看mongodb数据库端口有没有监听  netstat -antlp|grep 27017

三:操作mongodb数据库

1:在任意目录下输入mongo  即可进入mongodb数据库

2:刚刚我们是将认证注释掉的,相当于是免密登录,但这样是不安全的,所以现在我们要给数据库创建一个用户和密码,然后将配置文件中的注释去掉

执行mongo进到数据库执行   db.createUser({user:"root",pwd:"abcd1234",roles:[{role:"root",db:"admin"}]})

3:授权成功,关闭mongo服务

4:修改配置文件,开启登录认证

vi /mongodb/etc/mongodb.conf

5:启动mongo服务,并查看端口是否开启

6:在数据库执行show dbs可以看到啥都没有

这时我们切到admin库(因为刚刚我们建的用户设置的所属库就是admin库,如果进到config或者local库执行的话会报错无权限),使用用户密码登录再查看试试

“1” 表示登陆成功

7:使用nosql工具登录mongodb数据库(请先将27017端口加到防火墙规则里面)

nosql下载地址: https://nosqlbooster.com/downloads

下载后直接安装打开进到默认的页面

设置登录用户密码以及库名,最后点击保存并连接

连接成功

至此mongodb全部搭建完成,接下来是mongodb的基础使用

mongodb增删改查操作
注: mongodb存储的是文档,且文档是json格式的对象,所以增删改查都必须是json格式对象。

注:mongodb常用库和表操作,但mongodb在插入数据时,不需要先创建表。
注: table在mongodb里叫collections

show databases; #查看已有数据库
use dataName; #选择数据库,如果不存在库,则会自动创建。
show tables; # 查看已有的表
show collections # 同上,
db.createCollection('表名');#建表
db.表名.drop(); #删除表

1、增加数据,语法: db.collectionName.isnert(document)。

#不指定文档的id,数据库会默认分配一个随机id
db.user.insert({name:'zhaos',age:23,sex:'f'});
#指定文档的id
db.user.insert({_id:5,name:'zhaos',age:23,sex:'f'});
#增加单个文档
db.user.insert({_id:6,name:'zhaos',age:23,sex:'f'});
#增加多个文档 
db.user.insert([{_id:2,name:'zhangs',age:21,sex:'m'},{_id:3,name:'wangw',age:22,sex:'m'},{_id:4,name:'zhaos',age:23,sex:'f'}]);

注意,这里解释下自动生成的id,MongoDB采用了一个ObjectId的类型来做主键,ObjectId是一个12字节的 BSON 类型字符串,按照字节顺序,依次代表:
    4字节:UNIX时间戳 
    3字节:表示运行MongoDB的机器 
    2字节:表示生成此_id的进程 
    3字节:由一个随机数开始的计数器生成的值 
 
2、删除数据,语法: db.collection.remove(查询表达式, 选项)。选项是指需要删除的文档数,{0/1},默认是0,删除全部文档。

#将所有_id=7的文档删除
db.user.remove({_id:7})  
#将gender:'m'的所有文档删除
db.user.remove({gender:'m'})
#只删除一个gender:'m'的文档,num是指删除的文档数
db.user.remove({gender:'m',1})

3、修改数据,语法: db.collection.update(查询表达式,新值);

#从结果可以看出,这只是在替换一个文档,并非修改一个文档字段
> db.user.update({name:'zhangs'},{name:'liul'})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find();
{ "_id" : 2, "name" : "liul" }

#修改一个文档的字段,必须使用$set:{属性:'值'}
> db.user.update({name:'zhaos'},{$set:{name:'kongkong'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.user.find();
{ "_id" : 6, "name" : "kongkong", "age" : 23, "sex" : "f" }

修改时的赋值表达式
$set 修改某列的值
db.user.update({name:'zhaos'},{$set:{name:'kongkong'}})

$unset 删除某个列
eg:db.user.update({name:'kongkong'},{$unset:{name:'kongkong'}})

$rename 重命名某个列
eg:db.user.update({_id:6},{$rename:{sex:'gender'}})
eg:db.user.update({},{$rename:{'sex':'gender'}},{multi:true})

$inc 增长某个列
eg:db.user.update({_id:6},{$inc:{age:2}})

$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段.
eq:db.user.update({_id:7},{$setOnInsert:{age:5,gender:'f'}},{upsert:true})

4、查找数据,语法: db.collection.find(查询表达式,查询的列)。

#查询一个表中的所有文档    
db.user.find()

#查询特定属性的文档
db.user.find({_id:3})

#查询所有文档,显示gender列,不显示id
db.user.find({},{gender:1,_id:0})

#查询所有gender:'m'的文档,显示gender列,age列,不显示id
db.user.find({gender:'m'},{gender:1,_id:0,age:1})

5、高级查询知识点。

#not equal 不等于
$ne ---> != 查询表达式
#查询age不等于25的文档
db.user.find({age:{$ne:25}})

#great than 大于
$gt ---> >
db.user.find({age:{$gt:20}})

#great than equal 大于等于
$gte ---> >=
db.user.find({age:{$gte:25}})

#less than 小于
$lt ---> <=
db.user.find({age:{$lt:25}})

#less than equal 小于等于
$lte ---> <=
db.user.find({age:{$lte:25}})


#$in --> in
#查询age为20和25的文档
db.user.find({age:{$in:[20,25]}})

#$nin --> not in
#查询age不为20和25的文档
db.user.find({age:{$nin:[20,25]}})

#$or
语法: {$or:[v1,v2..]}
是指取出 field列是一个数组,且至少包含 v1,v2值
db.user.find({$or:[{age:{$gte:30}},{name:"Zhaos"}]})

#$and
语法: {$and:[{<operator-expression>},{<operator-expression>}..]}
是指取出 field列是一个数组,且至少包含 v1,v2值
db.user.find({$and:[{age:{$lte:30}},{age:{$gte:5}}]})

#$not
语法:{field:{$not:{ <operator-expression> }}}
是指取出 field列是一个数组,且至少包含 v1,v2值
db.user.find({age:{$not:{$gt:25}}})

#$all
语法: {field:{$all:[v1,v2..]}}
是指取出 field列是一个数组,且至少包含 v1,v2值
db.user.find({age:{$all:[30]}})

$exists
语法: {field:{$exists:1}}
作用: 查询出含有field字段的文档
#查询含有age列的文档
db.user.find({age:{$exists:1}})

$mod
语法: {field:{$mod:[ divisor(除数), remainder(余数)]}}
作用: 查询出含有mod字段的文档
#查询含有age列的文档
db.user.find({_id:{$mod:[5,0]}})

$nor
{$nor,[条件1,条件2]}
是指所有条件都不满足的文档为真返回
#查询所有age不为30,gender不为f的文档
db.user.find({$nor:[{age:30},{gender:'f'}]})

正则表达式查询
#查询所有以name:yang开头的文档 /patern/
db.user.find({name:/yang*/})
#查询所有以name:zhao开头的文档,且不区分大小写 /patern/i
db.user.find({name:/zhao/i})

$where
#查询age>6,且age<22的文档
db.user.find({$where:"this.age>6" && "this.age<=22"})

直接登陆admin数据库

mongo 192.168.32.128:27017/admin -uroot -pabcd1234

直接登陆admin数据库
mongo 192.168.32.128:27017/admin -uroot -pabcd1234

备份整库
mongodump -uroot -pabcd1234 -d admin -o /mongodb/data/ (执行完毕则会在/mongodb/data、目录下生成一个admin目录,我们将admin目录打个包)

将备份的整库导入到新库
mongorestore -d admin --dir /mongodb/data/admin/  (如果新库设置了密码,可以加   -u   -p参数)

仅备份一张collection
mongoexport -uroot -pabcd1234 -d admin -c test -o /mongodb/data/test.dat

将一张表导入新库
mongoimport -d admin -c test test.dat  (如果新的库设置了密码,可以加 -u  -p参数)

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值