Tôi chỉ gặp phải vấn đề này chính mình. Tôi không thể tìm thấy giải pháp một cuộc gọi, nhưng tôi đã tìm thấy giải pháp hai cuộc gọi hoạt động khi bạn có một giá trị duy nhất trong các phần tử mảng của mình . Sử dụng $pull
trước tiên, lệnh này sẽ xóa các phần tử khỏi một mảng, rồi đến $push
.
db.soup.update({
"tester":"tom"
}, {
$pull: {
'array': {
"id": "3"
}
}
})
db.soup.update({
"tester":"tom"
}, {
$push: {
'array': {
"id": "3",
"letter": "d"
}
}
})
Điều này sẽ hoạt động khi tài liệu không tồn tại, khi tài liệu tồn tại nhưng mục nhập trong mảng không tồn tại và khi mục nhập tồn tại.
Một lần nữa, điều này chỉ hoạt động nếu bạn có thứ gì đó, chẳng hạn như id
trong ví dụ này, trường đó phải là trường duy nhất trên các phần tử của mảng.