MongoDB配置与基本使用

mongoDB层次关系:      数据库>集合>文档sql

环境: Ubuntu14.04 MongoDB存储路径为/opt/mongodb 下文用MPATH代替mongodb

1 安装和启动数据库

1.1 下载MongoDB3.2.9最新版本vim

1.2 tar xf MONGODB.tar.gz数组

1.3 添加到环境变量 /etc/profilenosql

1.4 mongod -dbpath MPATH/data/dbcode

1.5 mongo 启动mongoDB SHELL对象

 

2 配置管理员和用户ip

2.1 查看当前数据库[仅一个local] 切换到admin数据库[准备建立用户管理员]rem

show dbs

use admin

2.2 建立用户管理员[管理用户的账号]

db.createUser({user:"master",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

# 成功建立后有如下提示

Successfully added user: {
	"user" : "master",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}

2.3 配置mongoDB认证和外链[默认只有localhost能链接]

设置ip [先关闭mongod服务]

sudo vim /etc/mongod.conf

新建配置文件并修改输入如下内容[容许外链]

bind_ip = 0.0.0.0  

2.4 开启认证模式

mongod -f /etc/mongod.conf --auth --dbpath MPATH/data/db

auth: 认证模式

f: 配置文件 同--config

2.5 认证登录mongoDB

mongo 

use dbs

ERROR # 没有权限

use admin

db.auth("master", "123456")

1 # 表示成功

2.6 建立其余用户

db.createUser({user:"hakase",pwd:"123456",roles:[{role:"readWrite",db:"nosql"}]})

2.7 用其余用户登录

use admin

db.auth("hakase","123456")

3 使用数据库

3.1 建立数据库/集合

使用两个终端 实际上是三个 还有一个mongod ...

    一个登录hakase来使用nosql数据库

    一个登录master来查看数据库状况

hakase:

use nosql

db.createCollection("test")

show collections

master:

show dbs

3.2 删除数据库

由于感受太麻烦 从新创建了一个超级超级用户...

db.createUser(
  {user:"god",
  pwd:"123456",
  roles:["readWriteAnyDatabase","dbAdminAnyDatabase","clusterAdmin", "userAdminAnyDatabase"]}
)

 而后删除数据库nosql

use nosql

db.dropDatabase()

{ "dropped" : "nosql", "ok" : 1 } # 删除成功 用 show dbs 命令看到nosql数据库已不存在

3.3 复制数据库

由于数据库上一步删掉了 因此还得从新建... 此次用了god账号登录

use nosql

db.createCollection("test")

db.createCollection("test2")

show dbs

show collections

接下来复制nosql数据库为copy_nosql

db.copyDatabase("nosql", "copy_nosql")

show dbs

3.4 管理集合 依然在nosql中

建立集合

db.createCollection("test3")

删除集合

coll = db.getCollection("test3")

coll.drop()

show collections

在集合中插入文档

coll = db.getCollection("test")

coll.insert({name:"ming", age:20})

coll.insert({name:"hong", age:18})

coll.find()

在集合中查找文档

coll.find()

coll.find({name:"hong"})

在集合中删除文档

coll.remove({age:20})

coll.find()

在集合中更新/修改文档

惟一一个比较复杂的

db.update(query, update, opts)

query 指定匹配查询文档

update 设置更新运算符

    $inc递增

    $set设置字段的值

    $push 条目推送到数组

opts 有两个属性

upsert 若没有找到则插入 理解:     if (!find()) insert else update

multi 查询匹配的全部文档都更新 不然只更新第一个找到的文档

coll.update(
  {name:"hong"},
  {$set:{age:22}},
  {upsert:false, multi:true}
)

coll.find()

db.save(obj) 保存对象的更改 和update区别不大

可是要求要找_id 不然你怎么肯定保存哪一个对象呢?

coll.save(
  {_id:ObjectId("57de3078bf66f6a50d3ff11d"),
  name:"gang",
  age:19}
)

coll.find()
相关文章
相关标签/搜索