Mongodb
GitbookBackend2020-12-29
🪕 mongod
- 和 MySQL + Sequelize 一样,用
multer
上传文件。 -
Schema 定义和插入数据不一致:
Schema 中定义了的 name 被修改成功,但是 school 字段添加不成功,这正是 mongoose 的优点,对于不符合 Schema 的字段的操作是不起作用的,但同时造成了一定的局限性。
当我们想对 mongoose 数据进行不符合 schema 的修改又不想修改 schema 时,可以直接修改
data._doc
, 当然在你调用 data.save() 时, 这个数据中不合法的数据还是不会被保存到数据库。 -
mongoose 默认的集合名字是 model 的复数形式: Admin -> admins
配置/etc/mongod.conf:
# network interfaces net: port: 27017 bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.
如果不設置成 0.0.0.0,則 yarn start 連接的時候有問題,報連接錯誤。而且 remote 的 robo-mongo 也連不上。
📑 mongodb 数据类型
- Double
- String,
- Object
- Array
- ObjectId
- Boolean
- Date
- Integer
- Timestamp
📑 mongoose 数据类型
- String
- Number
- Date
- Boolean
- ObjectId
- Array
- Map
- Buffer
📑 mongoose findOne
let product;
try {
production = await Model.findById(id);
} catch (error) {
throw new NotFoundException("could not find");
}
if (!product) {
throw new NotFoundException("could not find");
}
📑 lean
and populate
Lean
faster and less memory intensive, but the result documents are plain old JavaScript objects (POJOs), not mongoose.Document
.
User.findOne({ email }, "+password", { lean: true }).populate();