MongoDB 一个 instance 中可以有很多资料库,预设的有三个,admin, config, local
。当我们连进 MongoDB 後,输入 show dbs
就可以看到这三个,这三个分别有其用处。
admin:
看这个名字可以想见这个资料库很重要,对的,所有的重要资讯、重要指令都只能在这个资料库底下操作。例如要新增角色或者关闭 instance,相当於所有资料库的 administrator 一般。
如果要建立个别资料库的使用者或角色,在各别的资料库建立即可,但如果想要跨资料库,则需要在这里建立,这样会自动继承到其他资料库。
config:
此资料库主要是存放 sharding 相关的资讯。在 3.6 版後,开始存放 standalone 或 replication 的资料,也有跟 transaction 相关的资料,但无论如何是禁止去针对这个资料库进行修改或删除的,仅有查看可以。
local:
用来存放这个 instance,在这台机器的档案与资讯,不会因为 replica set 的设定而把相关资料复制走,简单来说就是别人用不到的资讯。连进去就有一个 startup_log 可以查看。
建立资料库并不需要特别宣告,直接 use
即可,以下为范例:
test> show dbs
admin 41 kB
config 111 kB
local 73.7 kB
test> use testUsedDatabase
switched to db testUsedDatabase
直接使用 use testUsedDatabase
就会切换到当下资料库。
Collection 就相当於 RDBMS 内的资料表(table)的概念,只是它存放的是文件(document)而非固定大小、格式的资料(record),例如:
//Record1
{
"_id": "customized_id1",
"fieldA": "valueA"
},
//Record2
{
"_id": "customized_id2",
"fieldA": "valueA",
"fieldB": 105,
"fieldC": 3.1415
}
这样的两笔一样可以直接写入 DB 喔!
db.getCollection('test-collection').insertMany([
{
"_id": "customized_id1",
"fieldA": "valueA"
},
{
"_id": "customized_id2",
"fieldA": "valueA",
"fieldB": 105,
"fieldC": 3.1415
}
])
结果如图:
建立一般 Collection 不需要特别宣告,直接写入任意资料即可,以下为范例:
local> show dbs
admin 41 kB
config 111 kB
local 73.7 kB
local> use testUsedDatabase
switched to db testUsedDatabase
testUsedDatabase> show collections
testUsedDatabase> db.getCollection('autoCreatedCollection').insertOne({"field": "hi"})
{
acknowledged: true,
insertedId: ObjectId("612cf44a031915cb2af17374")
}
testUsedDatabase> show collections
autoCreatedCollection
直接 insert 资料就会建立你指定的 collection。
MongoDB 另一个强大的 collection 类别,叫做 capped collection
。这种类型有几个特点:
db.getCollection('test-collection').isCapped()
size
单位为 byte; max
是最多几笔资料的意思db.createCollection( "test-capped.collection", { capped:true, size:1024*1024 , max:100 } )
MongoDB 的 views 很像是某些老牌资料库的简易版,我在这边不打算讲得太详细,因为个人认为在大部分情况下比较少需要使用到。可以想像它就是一个 method,可以自几定义参数,经过查询後返回结果。
关於 MongoDB Views 我暂时想不到别的了,如果很落实权限设计,应该也不会让特定使用者直接查到资料库才是。
本系列文章会同步发表於我个人的部落格 Pie Note
<<: [Day3]C# 鸡础观念- 核心的数据成员~变数(一)
>>: Material UI in React [Day 3] Layout (Grid & ThemeProvider)
上两篇进行了历史交易查询实作,但当日缴费查询则就要从订单直接查询着手 这整个流程有点乱,我还需要想一...
继续建构专案 ...
The Builder design pattern separates the construct...
Given a string containing just the characters '(' ...
更改档案或目录的权限,语法如下: chmod -R 755 /usr/local/apache-to...