Bạn có thể sử dụng Model.prototype.update
trong mongoose để cập nhật tài liệu phụ timings
.
Tuy nhiên có hai trường hợp -
- Nếu bạn muốn đẩy các mục nhập mà không cần kiểm tra các bản sao thì hãy sử dụng
$push
nhà điều hành
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$push: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
- Nếu bạn chỉ muốn đẩy các mục nhập riêng biệt, hãy sử dụng
$addToSet
nhà điều hành
var filter = {
_id: mongoose.Types.ObjectId('<USER_ID>')
};
var update = {
$addToSet: {
timings: {
startTime: "",
endTime: "",
elapsedTime: ""
}
}
};
db.collection.update(filter, update);
Lưu ý:Yêu cầu mongoose
đầu tiên
const mongoose = require('mongoose');
Hãy sửa mã của bạn thành bên dưới, bạn cũng không thể nhận được Id chính xác của tài liệu con, nhưng bạn có thể nhận được tài liệu gốc được cập nhật -
const updatedUser = await User.findOneAndUpdate({
_id: mongoose.Types.ObjectId(req.body._id)
},
{
$addToSet: {
timings: {
startTime,
endTime,
elapsedTime
}
}
}, {
new: true
}).exec();