mongoDB动态创建字段

时间:2017-09-13 14:18:22

标签: mongodb mongoose

我动态创建了一些字段(它们不在我的模型中)。我用COLLECTION.findById .....发现了我的收藏品。

如果我想获取路径,它不会显示动态创建的路径。

console.log(result);

{ lv: { name: 'List vlastníctva', exist: false },
  projekt: { name: 'Projektová dokumentácia', exist: false },
  uzemne_rozhodnutie: { name: 'Územné rozhodnutie', exist: true },
  complete: false,
  sctcst: { name: 'ščťčšť', exist: false },
  ctyzy: { name: 'čťýžý', exist: false },
  cssczz: { name: 'čšščžž', exist: false },
  __v: 0,
  _id: 59b916633d77c1cf2958f007 }

console.log(Object.keys(result.schema.paths));

[ 'lv.name',
  'lv.exist',
  'projekt.name',
  'projekt.exist',
  'uzemne_rozhodnutie.name',
  'uzemne_rozhodnutie.exist',
  'complete',
  '_id',
  '__v' ]

console.log(result.lv);
{ name: 'List vlastníctva', exist: true }

console.log(result.cssczz);
undefined
Object.keys中的

不是动态创建的字段。

command line + Robo 3T

我无法解决它。在DB中,它看起来已正确保存。

由于

1 个答案:

答案 0 :(得分:0)

试试这个:

result.get('cssczz', mongoose.Schema.Types.Object)

如果您正在尝试检索未在架构中定义的字段,则需要告诉它预期的类型是什么。

或者,这也可以起作用:

var resultAsObject = result.toObject();
console.log(resultAsObject.csszz);

每次尝试从mongoose对象中检索某个值时,它都会检查模式定义以确保值具有正确的类型。要检索不在模式中的属性,您需要告诉mongoose它的类型是什么,或者首先将mongoose对象转换为普通JS对象。

文档: http://mongoosejs.com/docs/api.html#document_Document-get http://mongoosejs.com/docs/api.html#document_Document-toObject