Getting Started
- ติดตั้ง mongoose
$ npm install mongoose --save
- เชื่อมต่อ database (mongoDB)
import mongoose
mongoose.connect('mongodb://localhost:27017/database-name');
- สร้าง Schema
const nameSchema = new mongoose.Schema({
[key]: [Type]
});
- สร้าง Model
const Modelname = mongoose.model('model-name', nameSchema);
##Schema
import mongoose
const Schema = mongoose.Schema;
export const NameSchema = new Schema(
{
name: [Types],
},
{ Option }
);
Types: String, Number, Boolean | Bool, Array, Buffer, Date, ObjectId | Oid, Mixed
Option:
ex.
{
versionKey: false,
timestamps: true,
}
versionKey: auto _v
timestamps: auto createdAt and updatedAt
ex2.
.set //เป็นการ set option เพิ่มใน schema เขียนด้านล่างตัว Schema ที่ export
NameSchema.set('toJSON', { getters: true }); // การทำงานเหมือน toObject แต่ใช้ได้เฉพาะ เมื่อ Document นั้นมีการใช้ toJSON ภายใน
NameSchema.set('toObject', { getters: true }); // แปลงข้อมูลที่ได้ให้อยู่ในรูป JavaScript Object
- populate(path,[model],[match],[select],[options],[callback])
- path: ชื่อ fieldObject ที่ต้องการ
- model: ชื่อ Model ที่จะไปเอาค่า fieldObject มา (import และประกาศใช้ Model ด้วย) และไม่จำเป็นต้องใส่ค่านี้นี้ ถ้า fieldObject ไม่ได้ต้อง import มาจาก Model อื่น
- match: { เงื่อนไขตัวดำเนินการเปรียบเทียบ } => เหมือน $match
- select: 'keyที่ต้องการให้แสดง, -keyที่ไม่ต้องการให้แสดง'
- options: { limit: 2 }
Modelname.find().populate({
path: '',
model: nameOtherModel
match: {},
select: ''
options: {}
}
- save()
const newModel = ModuleName.create(data)
newModel.save()
- การใช้งาน
Model.__
- aggregate(): ใช้เหมือน .aggregate([stage]) ของ mongo
- count(): ใช้นับจำนวน โดยสามารถใส่ filter ได้
Model.count({type:"A"})
=> จำนวนข้อมูลทั้งหมดที่มี type = A create - create(): สร้าง docs ต้อง save() ด้วย delete
- deleteMany({เงื่อนไข}): ลบมากกว่า 1 docs (Hard Delete)
- deleteOne({เงื่อนไข}): ลบ 1 doc (Hard Delete)
- findByIdAndDelete(
{_id:id},{เงื่อนไข}
): ค้นหา id ที่ตรงกัน และทำการลบ (Soft Delete) - findByIdAndRemove(
{_id:id},{เงื่อนไข}
): ค้นหา id ที่ตรงกัน และทำการลบ (Hard Delete) - findOneAndDelete({เงื่อนไข}): deleteOne()
- findOneAndRemove({เงื่อนไข}): deleteOne()
- remove({เงื่อนไข}): ลบ docs ทั้งหมดที่ตรงเงื่อนไข ถ้าจะให้ลบแค่อันแรกที่เจออันเดียวให้เซ็ท
single:true
(Hard Delete) find - find(): ค้นหา และคืนค่าเป็นข้อมูลทั้งหมดที่หาเจอ, สามารถใส่ {เงื่อนไข} ได้
- findById(): ค้นหาด้วย id และคืนค่าเป็นข้อมูลตัวแรกที่หาเจอ, สามารถใส่ {เงื่อนไข} ได้
- findOne(): ค้นหา และคืนค่าเป็นข้อมูลตัวแรกที่หาเจอ update
- update()
- updateMany()
- findByIdAndUpdate(
{_id:id},newData,{new:true}
): ค้นหา id ที่ตรงกัน และทำการอัปเดตค่า - findOneAndUpdate(
{เงื่อนไข},newData,{new:true}
): อัปเดตค่าที่ตรงเงื่อนไขค่าแรกที่เจอ - findOneAndReplace():
- replaceOne(): other
- validate({ [field]: null }, ['field']): ตรวจสอบข้อมูล //field นี้ ห้ามเป็น null
- where(): ใช้ find() แทนได้เหมือนกัน
- populate(): ใช้เมื่อต้องการ pop ค่าออกมา