I am attempting to increment the quantity of a line item in a cart object. Each Line Item has its own ObjectId as the same item can be added, but will have different attributes needed to process the order. Meaning that I need to look at the correct line, and not by the inventory item.
Database Record
Query ID's
{
  cartId: '6307c7ccb275c35cb6bb2b71',
  lineId: '6307c7d1b275c35cb6bb2b76'
}
Returned Results from Query No Update
{
  _id: new ObjectId("6307c7ccb275c35cb6bb2b71"),
  owner: '611afa8b9069c9126cff3357',
  discount: null,
  total: 101.94,
  items: [
    {
      itemId: '61cb88f25f499fd4563e99d9',
      sku: 1004,
      quantity: 1,
      price: 16.99,
      _id: new ObjectId("6307c7d1b275c35cb6bb2b73")
    },
    {
      itemId: '61cb88d85f499fd4563e99d3',
      sku: 1001,
      quantity: 1,
      price: 16.99,
      _id: new ObjectId("6307c7d1b275c35cb6bb2b76")
    },
    {
      itemId: '61cb89255f499fd4563e99e7',
      sku: 2003,
      quantity: 1,
      price: 16.99,
      _id: new ObjectId("6307c7d3b275c35cb6bb2b79")
    },
    {
      itemId: '61cb88df5f499fd4563e99d5',
      sku: 1002,
      quantity: 1,
      price: 16.99,
      _id: new ObjectId("6307c7d3b275c35cb6bb2b7c")
    },
    {
      itemId: '61cb89255f499fd4563e99e7',
      sku: 2003,
      quantity: 1,
      price: 16.99,
      _id: new ObjectId("6307c7deb275c35cb6bb2b7f")
    },
    {
      itemId: '61cb88d85f499fd4563e99d3',
      sku: 1001,
      quantity: 1,
      price: 16.99,
      _id: new ObjectId("6307cbcc3e81ef0f1a739cf9")
    }
  ],
  createdAt: 2022-08-25T19:04:44.859Z,
  updatedAt: 2022-08-25T19:26:51.714Z,
  __v: 0
}
exports.inc = async (req, res, next) => {
  console.log(req.body);
  const { cartId, lineId } = req.body;
  console.log(cartId);
  console.log(lineId);
  try {
    const updateCart = await Cart.findByIdAndUpdate(
      { _id: cartId, "item._id": lineId },
      { $inc: { quantity: 1 } },
      { new: true, returnDocument: "after" }
    ).exec();
    if (!updateCart) return next(new ErrorResponse("Unable to update the cart record", 404));
    console.log(updateCart);
    if (updateCart) {
      await calculateTotal(updateCart._id, updateCart.items, updateCart.discount);
      return sendRes(updateCart, 200, res);
    } else {
      return sendRes(updateCart, 201, res);
    }
  } catch (error) {
    console.log(error);
    next(error);
  }
};
The query is executing and processing the update based on the UpdateAt value, but the quantity isn't updating.
Please see let me know if you see anything off.
 
    