Đã tìm ra điều này.
Về cơ bản, bạn cần tạo đối tượng 'trình giữ chỗ' của tài liệu con mà bạn đang cố cập nhật trước khi chạy truy vấn, như sau:
var projectID = 'JKS78678923SDFD678';
var key = 'Three';
var value = 'Three';
var placeholder = {};
placeholder['options.' + key] = value;
Teams.findAndModify({
query: {
projectID:mongojs.ObjectId(projectID)
},
update: {
$set : placeholder
},
upsert: true,
multi: false,
new: true
},
function(error, result, lastErrorObject){
console.log(result);
});
Điều này cập nhật bất kỳ trường nào đã tồn tại và tạo cặp trường / giá trị nếu nó chưa tồn tại.