Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Chèn document vào MongoDB nếu chưa tồn tại (Upsert)

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.