MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да преобразувам JSON обектна структура в точкова нотация?

Това трябва да е достатъчно гъвкаво за повечето нужди:

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

Изпълнете вашите excludesFields променлива така:

dotNotate(excludeFields);

Връща текущата структура:

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

Така че можете дори да направите, inline:

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

Или предоставете като проекция:

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

Работи добре на всички дълбочини и дори с масиви по основен начин, освен ако не се нуждаете от оператори като $push .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да накарам mongo mapper да генерира файла config/mongo.yml в Rails 4

  2. Django+MongoDB срещу Node.js+MongoDB

  3. Как да знам размера на моя документ в MongoDB с ruby ​​драйвера

  4. MongoDB:Намерете минималния елемент в масива и го изтрийте

  5. mongo c драйвер:как да правите заявки за документи с _id в списък?