Обновить поле в массиве документов, вложенных в другой документ в MongoDB stich - PullRequest
0 голосов
/ 29 мая 2020

Внутри функции стежка MongoDB у меня есть следующая функция.

exports = function(){ //orderId
  let orderId = "2A01291D-0CAB-448E-B82D-17235526B55D"
  //let paid = true 
  console.log("triggered the update session paid status function")
  var sessionCol = context.services.get("mongodb-atlas").db("ClimbingWall").collection("sessions");
  const query = {"customers.orderId":orderId};

  var update = {"$set":{"customers.$[].paid": true}}

  return sessionCol.updateMany(query, update)
  .then(result => {
    const { matchedCount, modifiedCount } = result;
    console.log(`Successfully matched ${matchedCount} and modified ${modifiedCount} items.`)
    return result
  })
  .catch(err => console.error(`Failed to update items: ${err}`))
};

Функция ищет в массиве документов внутри другого документа те, которые соответствуют orderId, и обновляет оплаченное поле до true. Однако на данный момент обновляются все документы в массиве, а не только те, которые соответствуют orderId. Итак, как я могу обновить только те, которые соответствуют запросу?

...