【问题标题】:Mongoose setting default array size and valuesMongoose 设置默认数组大小和值
【发布时间】:2017-08-01 09:33:02
【问题描述】:

我正在尝试在我的 mongoose 架构中设置默认数组大小和值,但返回始终显示为 [],除非文档实际上有数据。

"transform": { type: [ Number ], default: [0, 0, 0] }

返回值为:

"transform":[]

如何配置我的架构以使其返回:

"transform":[0,0,0]

回答: 设置required: true 会将数据添加到创建的任何新文档中。但是,旧文档不会更新。

"transform": { type: [ Number ], default: [0, 0, 0], required: true }

更新 为了快速解决我的数据问题,我在 Mongo 上运行了更新以使用以下行升级所有现有文档。

db.getCollection('objects').updateMany(
    { "properties.transform": []}, 
    { $set: { "properties.transform" : [0,0,0] }}
);

注意:我的转换字段是属性的子字段,因此 "properties.transform"

【问题讨论】:

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

好吧,您在架构中将 required 设置为 true 。或 false,默认为空。在这种情况下,您不能将两种方式都留空或提供值。

您可以使用的 hack 就是这个。 只需将 required 设置为 true,并在数据输入时最初推送零数组。

model.push([0,0,0]);

【讨论】:

  • 知道了,我正在测试以前生成的文档,我刚刚运行了一个更新,默认设置为 0 并且要求为 true,新文档返回 [0,0,0]
  • 好兄弟!以前生成的文档导致它
猜你喜欢
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2015-10-11
  • 1970-01-01
相关资源
最近更新 更多