使用 OSX 的 brew 来安装 mongodb:
brew install mongodb
1、首先我们创建一个数据库存储目录 /data/db:
sudo mkdir -p /data/db
2、启动 mongodb,默认数据库目录即为 /data/db:
sudo mongod
3、再打开一个终端进入执行以下命令:
// 这个路径可以通过安装时候的信息找到
cd /usr/local/Cellar/mongodb/4.0.3_1/bin
./mongo
为了保证mongodb数据库的安全性,需要给数据库设置权限验证。
# 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' 表示验证失败
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
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
db.system.users.find().pretty()
如果修改了用户权限,则需要在用户所在的数据库再次认证才能生效。
> db
MongoDB 用 use + 数据库名称(use DATABASE_NAME) 的方式来创建数据库。use 会创建一个新的数据库,如果该数据库存在,则返回这个数据库。例如:创建一个名为“test”的数据库:
> use test
show dbs
至少插入一个文档才会显示新添加的数据库。
注:在 MongoDB 中,默认的数据库是 test,如果你没有创建任何数据库,那么集合就会保存在 test 数据库中。
# 首先使用show dbs看一下数据库列表:
> show dbs
# 删除数据库test:
> use test
> db.dropDatabase()
# 再看一下数据库列表:
> show dbs
除了以下方式,在插入文档的时候,也会自动创建集合
# name 是集合名称,是一个字符串;options 是可选项,是一个文档,指定内存大小和索引等选项
> db.createCollection(name, options)
注:undefined1.如果 collection 达到最大存储限制(size)之前达到最大文档数量(max)会删除旧文档。
2.MongoDB 会先检查size值,然后再检查max值
> show collections
> db.COLLECTION_NAME.drop()
# document是一个对象
> db.collection_name.insert(document)
MongoDB 用 update() 或者 save() 更新集合中的文档
2.1、update()
update() 更新已经存在文档的值
> db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)
上面范例只会更新第一条发现的文档,若想更新全部发现的文档,则需要用 multi:true ,具体写法如下
> db.user.update({'name':'user1'},{$set:{'name':'user2'}},{multi:true})
2.2、save()
save() 方法通过传入的文档来替换已有文档
> db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
> db.COLLECTION_NAME.remove(DELLETION_CRITTERIA,justOne)
justOne 如果设为 true 或 1,则只删除一个文档。 如果想删除所有记录,可以这样写:
> db.user.remove({})
可以用 find() 方法查询全部文档,可以用 findOne() 查询第一个文档,还可以根据 条件操作符 和 $type操作符 查询满足条件的文档。
> 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 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,MongoDB 会把这些键作为 and 条件,及常规 SQL 的 AND 条件。
> db.collection.find({key1:value1, key2:value2}).pretty()
MongoDB 中 or 条件用 $or关键字
> db.collection.find({$or: [{key1:value1},{key2:value2}]}).pretty()
本文参考了网上多篇文章,侵删。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。