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

Cập nhật một trường duy nhất trong MongoDB với $addToSet

Thêm giá trị vào mảng nếu chưa tồn tại ($addToSet)

Toán tử $addToSet thêm giá trị vào mảng chỉ khi giá trị đó chưa có trong mảng, tránh trùng lặp.

Dữ liệu điểm số

> db.demo336.insertOne({"Name": "Chris", "Score": [45, 67, 78]});
> db.demo336.insertOne({"Name": "David", "Score": [89, 93, 47]});

Thêm mảng [56, 34, 71] vào Score của David

> db.demo336.update(
    { Name: "David" },
    { $addToSet: { Score: [56, 34, 71] } }
);

Kết quả

{
    "_id": ObjectId("..."),
    "Name": "David",
    "Score": [89, 93, 47, [56, 34, 71]]  // Mảng được thêm như MỘT phần tử
}

⚠️ Cạm bẫy thường gặp: $addToSet coi cả mảng [56,34,71] là một giá trị đơn. Để thêm từng phần tử, dùng $each:

> db.demo336.update(
    { Name: "David" },
    { $addToSet: { Score: { $each: [56, 34, 71] } } }
);

Kết quả: Score: [89, 93, 47, 56, 34, 71] (các phần tử riêng lẻ).