db.collection.save() - Upsert แบบอัตโนมัติ
เมธอด save() จะทำการ insert ใหม่ หากเอกสารไม่มี _id หรือ _id ไม่มีในระบบ และ update (replace) หาก _id มีอยู่แล้ว
ตัวอย่างการใช้งาน
> db.demo481.save({ "FirstName": "Chris", "LastName": "Brown" });
WriteResult({ "nInserted": 1 })
> db.demo481.save({ "FirstName": "David", "LastName": "Miller" });
WriteResult({ "nInserted": 1 })
> db.demo481.save({ "FirstName": "John", "LastName": "Doe" });
WriteResult({ "nInserted": 1 })
> db.demo481.save({ "FirstName": "John", "LastName": "Smith" });
WriteResult({ "nInserted": 1 })
แสดงผลลัพธ์
> db.demo481.find();
{ "_id": ObjectId(...), "FirstName": "Chris", "LastName": "Brown" }
{ "_id": ObjectId(...), "FirstName": "David", "LastName": "Miller" }
{ "_id": ObjectId(...), "FirstName": "John", "LastName": "Doe" }
{ "_id": ObjectId(...), "FirstName": "John", "LastName": "Smith" }
การทำงานของ save()
| สถานการณ์ | พฤติกรรม |
|---|---|
| เอกสารไม่มี _id | Insert ใหม่ สร้าง _id อัตโนมัติ |
| เอกสารมี _id ที่ไม่มีในระบบ | Insert ใหม่ ใช้ _id ที่ระบุ |
| เอกสารมี _id ที่มีอยู่แล้ว | Replace ทั้งเอกสาร (เหมือน replaceOne) |