Sử dụng tùy chọn upsert: true trong update() để chèn mới nếu không tìm thấy document khớp.
Ví dụ minh họa
Tạo collection insertIfNotExistsDemo:
> db.insertIfNotExistsDemo.insertOne({"TenSinhVien": "Mike", "TuoiSinhVien": 21});
> db.insertIfNotExistsDemo.insertOne({"TenSinhVien": "Sam", "TuoiSinhVien": 22});
Upsert: Thêm David nếu chưa có
> var dieuKien = {"TenSinhVien": "David"};
> var giaTri = {"TenSinhVien": "David", "TuoiSinhVien": 26};
> db.insertIfNotExistsDemo.update(dieuKien, giaTri, {upsert: true});
Kết quả: WriteResult({ "nMatched": 0, "nUpserted": 1, "nModified": 0, "_id": ObjectId("...") })
Kiểm tra:
> db.insertIfNotExistsDemo.find().pretty();
{ "TenSinhVien": "Mike", "TuoiSinhVien": 21 }
{ "TenSinhVien": "Sam", "TuoiSinhVien": 22 }
{ "TenSinhVien": "David", "TuoiSinhVien": 26 }
Cú pháp hiện đại (MongoDB 3.2+)
db.collection.updateOne(
{tenTruong: "giaTri"},
{$set: {tenTruong: "giaTri", truongKhac: "giaTriKhac"}},
{upsert: true}
)
Ứng dụng: Idempotent operations, cache, sync dữ liệu, tránh duplicate.