前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongodb基础应用

mongodb基础应用

原创
作者头像
shirley
修改2019-05-04 14:54:50
7000
修改2019-05-04 14:54:50
举报
文章被收录于专栏:进击的全栈进击的全栈
  • Mac OSX 平台安装 MongoDB
  • MongoDB权限验证
  • MongoDB常用操作指令
一、Mac OSX 平台安装 MongoDB
(一)安装MongoDB

使用 OSX 的 brew 来安装 mongodb:

代码语言:txt
复制
brew install mongodb
(二)运行 MongoDB

1、首先我们创建一个数据库存储目录 /data/db:

代码语言:txt
复制
sudo mkdir -p /data/db

2、启动 mongodb,默认数据库目录即为 /data/db:

代码语言:txt
复制
sudo mongod

3、再打开一个终端进入执行以下命令:

代码语言:txt
复制
// 这个路径可以通过安装时候的信息找到
cd /usr/local/Cellar/mongodb/4.0.3_1/bin
./mongo
二、MongoDB权限验证

为了保证mongodb数据库的安全性,需要给数据库设置权限验证。

启用 MongoDB 用户认证的步骤:
  • 如果 admin 中没有用户,则必须在 admin中添加用户
  • 在要启用认证的数据库中创建对应的用户
  • 以认证方式,即 –auth 参数的方式启动 MongoDB 数据库
  • 用数据库对应的用户登录数据库,比如:mongo 127.0.0.1/test -utest_user -ppasword
设置用户并验证
代码语言:txt
复制
# 1.进入mongo环境
> ./mongo

# 2.切换到 'admin' 数据库
> use admin

# 3.给admin设置用户
# user: 用户名 
# pwd: 用户密码
# roles: 用来设置用户的权限,比如读,读写,写等等
> db.createUser({user: 'root', pwd: '123456', roles: ['root']})

# 4.验证该用户 'db.auth(用户名,用户密码)'
> db.auth('root', '123456')
# 如果返回 '1'表示验证成功, 如果是 '0' 表示验证失败

# 5.自定义数据库,并添加用户
# a.创建 'example' 数据库
> use example

# b.创建用户
> db.createUser({user: 'james', pwd: '123456', roles: [{role: 'readWrite'}]})

# c.验证该用户
> db.auth('james', '123456')
# 如果返回 '1'表示验证成功, 如果是 '0' 表示验证失败
role里的角色可以选
代码语言:txt
复制
Built-In Roles(内置角色):
    1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root  
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system
具体角色
代码语言:txt
复制
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
查看所有帐号
代码语言:txt
复制
db.system.users.find().pretty()

如果修改了用户权限,则需要在用户所在的数据库再次认证才能生效。

三、MongoDB常用操作指令
(一)操作数据库
1. 使用db查看当前操作的数据库
代码语言:txt
复制
> db
2. 创建数据库

MongoDB 用 use + 数据库名称(use DATABASE_NAME) 的方式来创建数据库。use 会创建一个新的数据库,如果该数据库存在,则返回这个数据库。例如:创建一个名为“test”的数据库:

代码语言:txt
复制
> use test
3. 检查数据库列表
代码语言:txt
复制
show dbs

至少插入一个文档才会显示新添加的数据库。

注:在 MongoDB 中,默认的数据库是 test,如果你没有创建任何数据库,那么集合就会保存在 test 数据库中。

4. 删除数据库
代码语言:txt
复制
# 首先使用show dbs看一下数据库列表:
> show dbs
# 删除数据库test:
> use test
> db.dropDatabase()
# 再看一下数据库列表:
> show dbs
(二)集合操作
1. 创建集合

除了以下方式,在插入文档的时候,也会自动创建集合

代码语言:txt
复制
# name 是集合名称,是一个字符串;options 是可选项,是一个文档,指定内存大小和索引等选项
> db.createCollection(name, options)

注:undefined1.如果 collection 达到最大存储限制(size)之前达到最大文档数量(max)会删除旧文档。

2.MongoDB 会先检查size值,然后再检查max值

2. 显示当前操作数据库内的所有集合
代码语言:txt
复制
> show collections
3. 删除集合
代码语言:txt
复制
> db.COLLECTION_NAME.drop()
(三)文档操作
1. 文档操作
代码语言:txt
复制
# document是一个对象
> db.collection_name.insert(document)
2. 更新文档

MongoDB 用 update() 或者 save() 更新集合中的文档

2.1、update()

update() 更新已经存在文档的值

代码语言:txt
复制
> db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

上面范例只会更新第一条发现的文档,若想更新全部发现的文档,则需要用 multi:true ,具体写法如下

代码语言:txt
复制
> db.user.update({'name':'user1'},{$set:{'name':'user2'}},{multi:true})

2.2、save()

save() 方法通过传入的文档来替换已有文档

代码语言:txt
复制
> db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
3. 删除文档
代码语言:txt
复制
> db.COLLECTION_NAME.remove(DELLETION_CRITTERIA,justOne)

justOne 如果设为 true 或 1,则只删除一个文档。 如果想删除所有记录,可以这样写:

代码语言:txt
复制
> db.user.remove({})
(四)文档查询

可以用 find() 方法查询全部文档,可以用 findOne() 查询第一个文档,还可以根据 条件操作符 和 $type操作符 查询满足条件的文档。

代码语言:txt
复制
> db.user.find()
# 如果想要格式化显示查询结果,需要用 pretty() 方法
> db.COLLECTION_NAME.find().pretty()
条件操作符

操作

格式

范例

等于

{<key>:<value>}

db.user.find({"name":"liruihuan"}).pretty()

小于

{<key>:{$lt:<value>}}

db.user.find({"age":{$lt:18}}).pretty()

小于或等于

{<key>:{$lte:<value>}}

db.user.find({"age":{$lte:18}}).pretty()

大于

{<key>:{$gt:<value>}}

db.user.find({"age":{$gt:18}}).pretty()

大于或等于

{<key>:{$gte:<value>}}

db.user.find({"age":{$gte:18}}).pretty()

不等于

{<key>:{$ne:<value>}}

db.user.find({"age":{$ne:18}}).pretty()

MongoDB 中的 and 条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,MongoDB 会把这些键作为 and 条件,及常规 SQL 的 AND 条件。

代码语言:txt
复制
> db.collection.find({key1:value1, key2:value2}).pretty()
MongoDB 中的 or 条件

MongoDB 中 or 条件用 $or关键字

代码语言:txt
复制
> db.collection.find({$or: [{key1:value1},{key2:value2}]}).pretty()

本文参考了网上多篇文章,侵删。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Mac OSX 平台安装 MongoDB
    • (一)安装MongoDB
      • (二)运行 MongoDB
      • 二、MongoDB权限验证
        • 启用 MongoDB 用户认证的步骤:
          • 设置用户并验证
            • role里的角色可以选
              • 具体角色
                • 查看所有帐号
                • 三、MongoDB常用操作指令
                  • (一)操作数据库
                    • 1. 使用db查看当前操作的数据库
                    • 2. 创建数据库
                    • 3. 检查数据库列表
                    • 4. 删除数据库
                  • (二)集合操作
                    • 1. 创建集合
                    • 2. 显示当前操作数据库内的所有集合
                    • 3. 删除集合
                  • (三)文档操作
                    • 1. 文档操作
                    • 2. 更新文档
                    • 3. 删除文档
                  • (四)文档查询
                    • 条件操作符
                    • MongoDB 中的 and 条件
                    • MongoDB 中的 or 条件
                相关产品与服务
                云数据库 MongoDB
                腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档