linux安装编译mongodb,Linux安装MongoDB及其基本操作

Mongo说实话,刚开始一上来没觉得它多好用,倒是问题遇到了一堆,可能是从关系型数据库转过来不习惯吧.还好有资料可查,单单为了一个退出之后重进进不去,就磨了将近2个小时,原因是mongod的进程被关掉了,我也是有点服了我自己了,然后给自己的将近一下午的折腾写个总结吧.

1 安装部署mongo

1.1 下载安装包

可以去官网下载,找自己想要的版本(https://www.mongodb.com/),或者去github下载源码编译安装.

1.2 创建目录

mongo在使用的时候跟大多数据库一样需要有自己的数据目录,为了方便,我直接放到MongoDB的目录里了

mkdir data

mkdir log

1.3 解压 并修改文件名

mv mongodb-linux-x86_64-ubuntu1604-3.4.7 MongoDB

1.4 进入mongo目录

1.5 创建配置文件

– mkdir conf

– cd conf

– vim conf.properties

#端口

port=27017

#db存放的目录

dbpath=/opt/mongotest/data/db

#后台启动需要配置日志输出

logpath=/opt/mongotest/single/mongo/log/mongo.log

#日志模式

logappend=true

#设置成后台启动

fork=true

ps:后面与权限认证相关的先不设置

1.6 启动mongo

mongo目录执行

./bin/mongod -f conf/conf.properties

(记住,如果要登录的话,这个进程不要关掉)

启动mongodb

日志输出:

root@chwx2:/opt/mongotest/single/mongo# ./bin/mongod -f conf/conf.properties

about to fork child process, waiting until server is ready for connections.

forked process: 4988

all output going to: /opt/mongotest/single/mongo/log/mongo.log

child process started successfully, parent exiting

表示后台启动mongo成功

2 使用mongo进行日常操作

2.1 连接mongodb

mongo/bin目录下执行

./mongo

2.2 查看数据库

show dbs

2.3 查看当前所在数据库

db

2.4 创建数据库

use openfire (临时创建 如果不做操作 则离开后被系统删除)

2.5 在当前数据库删除当前数据库

db.dropDatabase()

2.6 查看当前库的所有用户

show users

2.7 查看集合(或者叫表)

show collections

2.8 创建集合

db.createCollection(“mycollection”)

2.9 创建集合

(当插入一条数据时,不存在mongodb会帮我们创建,和创建数据库同理)

db.MySecondCollection.insert({“name” : “ming”})

2.10 删除当前库的一个集合

db.CollectionName.drop()

2.11 插入一条数据

db.MyFirstCollection.insert({“_id”:”3”,”title”:”mongotest”,”description”:”this is test”})

注意:插入的都是JSON形式的,所以一定要用{},否则会报错:

Sat Mar 19 14:22:39.160 SyntaxError: Unexpected token :

2.12 插入一条_id存在的数据

db.MyFirstCollection.insert({“_id”:”3”,”title”:”mm”})

输出:E11000 duplicate key error index: openfire.MyFirstCollection.$_id_ dup key: { : “3” }

解释:_id即是mongodb的默认主键,默认自动生成,我们可以直接设置以达到我们想要的目的

问:插入一条和原来集合完全不一样的数据可以吗?

答:可以,所以我们要在程序中规避,手动指定我们一个集合里面的字段,否则就无法实现查询及其他功能了

> db.MyFirstCollection.insert({"newTitle":"null"})

> db.MyFirstCollection.find();

{ "_id" : "3", "title" : "new title", "description" : "this is test" }

{ "_id" : ObjectId("56ecf4fe0dceecace97c4506"), "newTitle" : "null" }

2.13 查看集合第一条记录

db.MySecondCollection.findOne();

输出:{ “_id” : ObjectId(“56ecde0662552d15c443dd4a”), “name” : “ming” }

2.14 查找一条/多条特定数据

db.MySecondCollection.findOne({“name”:”ming”})

输出:{ “_id” : ObjectId(“56ecde0662552d15c443dd4a”), “name” : “ming” }

2.15 更新一条记录

db.MyFirstCollection.update({“title”:”mongotest”},{$set:{“title”:”new title”}},true,false)

结果:

db.MyFirstCollection.findOne()

{ “_id” : “3”, “title” : “new title”, “description” : “this is test” }

update详解

db.collection.update(criteria,objNew,upsert,multi)

criteria:查询条件

objNew:update对象和一些更新操作符

upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。

multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。

更新操作符:

1.$inc

用法:{$inc:{field:value}}

作用:对一个数字字段的某个field增加value

示例:db.students.update({name:”student”},{$inc:{age:5}})

2.$set

用法:{$set:{field:value}}

作用:把文档中某个字段field的值设为value

示例:db.students.update({name:”student”},{$set:{age:23}})

3.$unset

用法:{$unset:{field:1}}

作用:删除某个字段field

示例: db.students.update({name:”student”},{$unset:{age:1}})

4.$push

用法:{$push:{field:value}}

作用:把value追加到field里。注:field只能是数组类型,如果field不存在,会自动插入一个数组类型

示例:db.students.update({name:”student”},{$push:{“title”:”major”}}

5.$rename

用法:{$rename:{old_field_name:new_field_name}}

作用:对字段进行重命名(不是值,是字段)

示例:db.students.update({name:”student”},{$rename:{“name”:”newname”}})

3 设置用户权限及访问

3.1 给admin添加用户

切换到admin库:use admin

添加admin用户:db.addUser(“root”,”admin”)

注意:必须先给admin库添加用户,否则就算给具体的库添加了用户,后续进入依然能操作具体库.

因为默认admin库用户具有最高权限,相当于具体库需要认证时,进入的用户持有的是admin的权限,所以无需认证依然能进行操作.

3.2 给具体库添加用户

use openfire

db.addUser("openfire","password")

3.3 重启mongo并在启动时配置需要认证

方法一:退出重启并加上auth参数

./bin/mongod -f conf/conf.properties –auth(注意是两个-)

方法二:修改配置文件,加上参数(推荐)

auth=true

3.4 测试权限

>use openfire

>db.MySecondCollection.findOne();

Sat Mar 19 14:04:55.653 error: {

"$err" : "not authorized for query on openfire.MySecondCollection",

"code" : 16550

} at src/mongo/shell/query.js:128

4.认证并操作

//此处应该设置成更加恰当的用户名及密码

> db.auth("openfire","password")

1

> db.MySecondCollection.findOne()

{ "_id" : ObjectId("56ecde0662552d15c443dd4a"), "name" : "ming" }

>

5.另一种方法认证

在进入mongo时候加上数据库及用户名、密码

./bin/mongo openfire -uopenfire -ppassword

root@test:/opt/mongotest/single/mongo# ./bin/mongo openfire -uopenfire -ppassword

MongoDB shell version: 2.4.6

connecting to: openfire

> db

openfire

> db.MySecondCollection.findOne()

{ "_id" : ObjectId("56ecde0662552d15c443dd4a"), "name" : "ming" }

>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值