MongoDB 基本操作

MongoDB 基本操作

MongoDB 是一个面向文档存储的数据库

数据库

  • 一个MongoDB 中可以创建多个数据库,每个数据库都有自己的集合和权限,不同的数据库存放在不同的文件中。
  • 数据库命名规则 
    • 不能是空字符串
    • 不能含有”(空格)、.、$、/、\和\0(空字符)
    • 应全部小写
    • 最多64字节
  • 特殊数据库
    • admin :要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
    • local :这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
    • config :当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
  • 基本操作
    • show dbs 显示所有数据库
    • db 显示当前数据库对象
    • use db_name 连接到指定数据库

文档

  • 介绍:文档是一组键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
    一个简单的文档例子如下:
{"site":"www.baidu.com", "name":"百度"}
  • 文档键命名规范:
    • 键不能含有\0 (空字符)。这个字符用来表示键的结尾。
    • .和$有特别的意义,只有在特定环境下才能使用。
    • 以下划线”_”开头的键是保留的(不是严格要求的)。

常用命令

数据库的登录

1、启动/停止mongo服务端

service mongod start/stop
/etc/init.d/mongod start/stop

在 mongo SHELL 中停止

use admin
db.shutdownServer()

2、连接服务端

  • 连接本地服务器时,当未开启安全认证
执行 mongo 命令,使用无密码登陆。
  • 使用密码连接服务器
    使用admin数据库创建用户
db.createRole({createRole:"anyActionAndanyResource",privileges:[ {resource:{anyResource:true}, actions:['anyAction']}],roles:[]})
db.createUser({user:"scutech",pwd:"dingjia",roles:[{role:"backup",db:"admin"},{role:"restore",db:"admin"},{role:"anyActionAndanyResource",db:"admin"}]})

编辑配置文件/etc/mongod.conf,增加参数如下,并重启mongod服务。

security:
  authorization: enabled

连接服务器方式

mongo -u username -p password --authenticationDatabase admin
数据库基本命令

1、查看帮助列表

help

2、 显示数据库列表

show dbs;

3、创建数据库

use DATABASE_NAME

要显示刚新建的数据库,我们需要向数据库插入一些数据
如果数据库不存在,则创建数据库,否则切换到指定数据库。
4、 删除当前数据库

db.dropDatabase()

5、显示当前数据库中的集合

show collections

6、删除集合

db.collection.drop()

7、使用 insert() 或 save() 方法向集合中插入文档

db.COLLECTION_NAME.insert(document)

8、查询数据

db.COLLECTION_NAME.find()

需要以易读的方式来读取数据,可以使用 pretty() 方法

db.COLLECTION_NAME.find().pretty()

9、删除文档

db.COLLECTION_NAME.remove({:})

删除所有文档

>db.col.remove({})

10、数据库统计信息:db.stats()

MongoDB Enterprise hxf:PRIMARY> db.stats()
{
    "db" : "test",   //数据库名
    "collections" : 2,   //集合数量
    "views" : 0,    
    "objects" : 12,   //文档数量
    "avgObjSize" : 278.4166666666667,   //平均每个文档的大小
    "dataSize" : 3341,   //数据占用空间大小
    "storageSize" : 32768,   //数据库存储大小
    "numExtents" : 0,
    "indexes" : 1,
    "indexSize" : 16384,
    "ok" : 1
}

11、集合统计信息:db.collection.stats()

用户操作

1、添加用户

mongo 连接实例
use admin

执行命令创建用户

db.createUser({user:"scutech",pwd:"dingjia",roles:[{role:"backup",db:"admin"},{role:"restore",db:"admin"}]})

2、查看用户及其权限

首先需要使用数据库:
如: use admin
然后就查看数据库中的用户及其权限:
> show users

3、创建具有anyAction和anyResource权限的角色:

db.createRole({createRole:"anyActionAndanyResource",privileges:[ {resource:{anyResource:true}, actions:['anyAction']}],roles:[]})

4、创建能够恢复到指定时间点的用户(具有anyAction和anyResource权限)

db.createUser({user:"scutech",pwd:"dingjia",roles:[{role:"backup",db:"admin"},{role:"restore",db:"admin"},{role:"anyActionAndanyResource",db:"admin"}]})

5、删除用户

db.system.users.remove({user:"yudan"});

6、显示所有用户

MongoDB Enterprise > use admin
switched to db admin
MongoDB Enterprise > db.system.users.find();
{ "_id" : "admin.zhou", "user" : "zhou", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "ZTJ90yieiPKmUejVSdY6PQ==", "storedKey" : "blKrX2BYdX2R1yFrzs2DUZ8/5TE=", "serverKey" : "Nanrx+0LnT+wdFgl48wzneKdqyc=" } }, "roles" : [ { "role" : "backup", "db" : "admin" }, { "role" : "restore", "db" : "admin" } ] }
{ "_id" : "admin.yudan", "user" : "yudan", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "mJlSPfmFteGLkoqoj8LnLg==", "storedKey" : "Ap3fmmSdA8wyvAuRT9SXIEuocWU=", "serverKey" : "YsL1HHHBStT30DcDqiXnLD0SdII=" } }, "roles" : [ { "role" : "backup", "db" : "admin" }, { "role" : "restore", "db" : "admin" }, { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
集合操作

1、创建集合

MongoDB Enterprise > db.runoob.insert({"name":"xutian","age":38,"job":"accountant");
WriteResult({ "nInserted" : 1 })

2、显示所有集合

MongoDB Enterprise > show collections;
people
runoob
文档操作

1、文档插入

MongoDB Enterprise > db.people.insert({"name":"xutian"});
WriteResult({ "nInserted" : 1 })

2、查看文档

MongoDB Enterprise > db.people.find();
{ "_id" : ObjectId("5839201db9e36f36346d9b3e"), "name" : "xutian" }
{ "_id" : ObjectId("583929fea5218b20de4ef8d7"), "name" : "tiandan", "age" : 24, "job" : "doctor" }
{ "_id" : 3, "name" : "xuMother", "age" : 56, "job" : "No" }

3、更新文档
语法

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
MongoDB Enterprise > db.people.update({"name":"tiandan"},{$set:{"age":25}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

4、删除文档

db.runoob.remove({"name":"xutian"})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值