MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So aktualisieren Sie das verschachtelte Objekt des Mongoose-Dokuments nur für bereitgestellte Schlüssel

Wie die meisten Antworten andeuten, müssen Sie den Punktnotation Um eingebettete Dokumente zu aktualisieren und Ihre obige Frage zu beantworten, verwenden Sie die folgende Hilfsmethode, die Rekursion anwendet, um ein bestimmtes Objekt in seine Punktnotationsdarstellung umzuwandeln:

function convertToDotNotation(obj, newObj={}, prefix="") {

  for(let key in obj) {
      if (typeof obj[key] === "object") {
          convertToDotNotation(obj[key], newObj, prefix + key + ".");
      } else {
          newObj[prefix + key] = obj[key];
      }
  }

  return newObj;
}


let params = {
   address: {
      city: {
         location: {
            street: "new street"
         }
      }  
   }
};

const dotNotated = convertToDotNotation(params);
console.log(JSON.stringify(dotNotated, null, 4));