Update value inside mongodb array object

I’m trying to update a value inside my array of objects. Looking at the above mongoDB schema what I want is: Find an expense with the ID match with the _id and need to update the fields with new ones from the req.body. Just need to update the: expensesType, description, price and status.

The following code is what I tried to do. First I need to match the right expense and it works fine but when I try to house.save() show me a message ‘house.save is not a function’. So I think maybe I need to use a mongoDB function to get the result.

router.put("/editExpense/:id", ensureAuthenticated, (req, res) => {
  var id = mongoose.Types.ObjectId(req.params.id);
  House.updateOne(
    { "expensesHouse._id": id },
    {
      members: 1,
      name: 1,
      description: 1,
      address: 1,
      type: 1,
      user: 1,
      userID: 1,
      userType: 1,
      expensesHouse: { $elemMatch: { _id: id } },
      date: 1
    },
    { $set: { "expensesHouse.expenseType": req.body.expenseType } }
  ).then(house => {
    req.flash("success_msg", "Expenses Updated");
    res.redirect("/houses/dashboard");
  });
});

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.