sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur konverterar man JSON-objektstruktur till punktnotation?

Detta bör vara tillräckligt flexibelt för de flesta behov:

function dotNotate(obj,target,prefix) {
  target = target || {},
  prefix = prefix || "";

  Object.keys(obj).forEach(function(key) {
    if ( typeof(obj[key]) === "object" && obj[key] !== null ) {
      dotNotate(obj[key],target,prefix + key + ".");
    } else {
      return target[prefix + key] = obj[key];
    }
  });

  return target;
}

Kör på din excludesFields variabel som så:

dotNotate(excludeFields);

Den returnerar den aktuella strukturen:

{ "Contact.Address" : 0, "Contact.Phone" : 0 }

Så du kan till och med göra, inline:

things.findOne({}, {fields: dotNotate(excludeFields) })

Eller tillhandahåll som en projektion:

var projection = { "fields": {} };
dotNotate(excludeFields,projection.fields);
things.findOne({}, projection);

Fungerar bra på alla djup och även med arrayer på ett väsentligt sätt, såvida du inte behöver operatorer som $push .



  1. Räkna antalet instanser av sträng i ett fält över dokument grupperade på ett annat fält i MongoDB?

  2. Hur man hittar dokument med exakt samma arrayposter som i en fråga

  3. Valideringsobjekt måste ha minst en operatör/meteormongo

  4. Nodejs paginering