今日呢,筆者想先將專案資料庫的命名與結構先想清楚,也就是Database, Collection 要怎麼取名、各自放什麼。因為我這個小專案會存 { username, password }
,把這些規劃好,之後串接就會順很多。那就開始吧!
命名沒有硬性規範,但官方社群也提到 沒有特定制式;維持團隊一致即可。以下是我喜歡、清楚好讀的風格。
terrible_login_dev
(之後可再開 terrible_login_prod
)accounts
(用複數小寫,直覺表示「很多帳號」)accounts
文件的欄位(v1)
{
"_id": ObjectId("..."),
"username": "alice",
"password": "banana",
"createdAt": ISODate("2025-10-08T12:34:56Z"),
"updatedAt": ISODate("2025-10-08T12:34:56Z")
}
Date
欄位使用 Mongo 的 BSON Date(UTC、毫秒精度),用ISODate(...)
/new Date()
建就好。([MongoDB][https://www.mongodb.com/docs/manual/reference/bson-types])
因為筆者打算讓 username
與 password
都是獨一無二的,因此在 MongoDB 裡使用 Unique Index 來保證這件事:
db.accounts.createIndex({ username: 1 }, { unique: true })
db.accounts.createIndex({ password: 1 }, { unique: true })
terrible_login_dev (Database)
└── accounts (Collection)
├── Document: account
│ ├─ username : string (UNIQUE)
│ ├─ password : string (UNIQUE)
│ ├─ createdAt: Date
│ └─ updatedAt: Date
└── Indexes:
├─ { username: 1 } UNIQUE
└─ { password: 1 } UNIQUE
terrible_login_prod (Database)
└── accounts (Collection)
└── (同上,正式環境用)