As the title above, I am looking for a way to update mongoDB data(array, which has 21 fields in it) with overwriting using REST API Patch
below is my MongoDB Collection schema ('-' mark means a lower level of the top-level component)
| Key | Type |
|---|---|
| _id | ObjectId |
| ... | ... |
| transactionLogs_docs | Array |
| - [0] | Object |
| - transactionID | String |
| - transactionType | String |
| - userId | String |
| - firstName | String |
| - lastName | String |
| - ... | ... |
currently with my code(coded with nodejs, express, vuejs, vuetify) when I update some data in the collection using REST API Patch, the data keys are gone except the one that I listed in the code.
What I wanna do is, partially update and replace values in the collection's transactionLogs_docs[0].fields and other fields out of transactionLogs_docs. (what I didn't mention in code, just maintain the original data)
below is my server-side patch function code.
// Modify Post
router.patch('/:id', async(req, res) => {
const posts = await loadPostsCollection();
await posts.updateOne(
{ "_id" : new mongodb.ObjectID(req.params.id) },
{$set: {
"transactionLogs_docs": {
"0": {
"transactionId": req.body.transactionId,
"transactionType": req.body.transactionType,
"userId": req.body.userId,
"firstName": req.body.firstName,
"lastName": req.body.lastName
}
},
"createdAt": req.body.createdAt,
"deviceName": req.body.deviceName,
"passCheck": req.body.passCheck,
"max_temp": req.body.max_temp
}},
{ upsert: true }
);
res.status(201).send();
});