sql >> Databáze >  >> NoSQL >> MongoDB

Jak převést strukturu objektu JSON na tečkovou notaci?

To by mělo být dostatečně flexibilní pro většinu potřeb:

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;
}

Spusťte v excludesFields proměnná takto:

dotNotate(excludeFields);

Vrací aktuální strukturu:

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

Takže můžete dokonce udělat, inline:

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

Nebo poskytněte jako projekci:

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

Funguje pěkně ve všech hloubkách a dokonce i s poli základním způsobem, pokud nepotřebujete operátory jako $push .



  1. Importujte soubory CSV z adresáře, abyste mohli nasadit databázi na Rails

  2. Obrovské zpoždění při použití Celer + Redis

  3. Redis Python - jak odstranit všechny klíče podle konkrétního vzoru v pythonu, bez iterace pythonu

  4. Zabraňte Spring Data pro Mongo převést ID na ObjectId