sql >> Database >  >> NoSQL >> MongoDB

Hoe JSON-objectstructuur naar puntnotatie te converteren?

Dit zou flexibel genoeg moeten zijn voor de meeste behoeften:

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

Uitvoeren op uw excludesFields variabele als volgt:

dotNotate(excludeFields);

Het geeft de huidige structuur terug:

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

U kunt dus zelfs inline doen:

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

Of geef als projectie aan:

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

Werkt goed op alle diepten en zelfs met arrays op een essentiële manier, tenzij je operators nodig hebt zoals $push .



  1. MongoDB BasicDBObject vs Document in java

  2. Vraag mongo om waardeveranderingen in tijdreeksen te detecteren

  3. Verschil tussen id- en _id-velden in MongoDB

  4. Redis haalt geen gegevens op uit de cache