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

Thêm tài liệu MongoDB tránh trùng lặp với unique index

Để tránh trùng lặp khi insert, tạo unique index và dùng upsert: true. Tạo collection với unique index trên StudentFirstName:

> db.insertWithoutDuplicateDemo.createIndex({"StudentFirstName":1}, { unique: true });
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.insertWithoutDuplicateDemo.insert({"StudentFirstName":"Chris"},{ upsert: true });
WriteResult({ "nInserted" : 1 })
> db.insertWithoutDuplicateDemo.insert({"StudentFirstName":"David"},{ upsert: true });
WriteResult({ "nInserted" : 1 })
> db.insertWithoutDuplicateDemo.insert({"StudentFirstName":"Chris"},{ upsert: true });
WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "E11000 duplicate key error..." }})
> db.insertWithoutDuplicateDemo.insert({"StudentFirstName":"Bob"},{ upsert: true });
WriteResult({ "nInserted" : 1 })

Hiển thị kết quả - chỉ 3 tài liệu duy nhất:

{ "_id" : ObjectId("5e064405..."), "StudentFirstName" : "Chris" }
{ "_id" : ObjectId("5e064410..."), "StudentFirstName" : "David" }
{ "_id" : ObjectId("5e06441f..."), "StudentFirstName" : "Bob" }

Giải thích: unique: true trên index ngăn chặn trùng lặp ở cấp database. upsert: true có nghĩa: nếu tồn tại thì cập nhật, không thì insert. Khi trùng unique key, MongoDB ném lỗi E11000 (code 11000). Ứng dụng cần bắt lỗi này.