Sử dụng $addToSet
thay vì $push
.
db.push.update(
{ _id: 5 },
{ $addToSet: { "quizzes": {"wk": 6.0, "score": 8.0}, "play": {"wk": 6.0, "score": 8.0} } }
)
CHỈNH SỬA:
Không có cách tiếp cận tích hợp đơn giản nào để cập nhật tài liệu con có điều kiện trong một trường mảng, theo thuộc tính cụ thể. Tuy nhiên, một thủ thuật nhỏ có thể thực hiện công việc bằng cách thực hiện hai lệnh liên tiếp.
Ví dụ:Nếu chúng tôi muốn cập nhật quizzes
trường có đối tượng { "wk": 7.0, "score": 8.0 }
, chúng ta có thể thực hiện theo hai bước:
Bước 1: $pull
ra các tài liệu con từ quizzes
mảng trong đó "wk": 7.0
. ( Không có gì xảy ra nếu không tìm thấy tài liệu phụ phù hợp ).
db.push.update(
{ _id: 5 },
{ $pull: { "quizzes": { "wk": 7.0 } } }
)
Bước 2: $addToSet
tài liệu phụ.
db.push.update(
{ _id: 5 },
{ $addToSet: { "quizzes": {"wk": 7.0, "score": 8.0} } }
)
Bạn có thể kết hợp hai lệnh cập nhật ở trên bằng cách sử dụng bulk.find().update()