如果在创建文档时未提供任何值,则数组中的子文档将另存为空数组项

时间:2018-11-14 03:57:10

标签: arrays mongodb mongoose mongoose-schema

我想要的是将架构中的特定字段设置为包含项目的数组。

当我创建有问题的文档时,我将没有任何数组项。因此,我希望我的文档看起来像这样:

{
  notes: []
}

问题是,我得到一个看起来像这样的数组:

{
  notes: ['']
}

查询notes.length时,我得到1,这对我来说是个问题,因为它本质上是一个空数组项。

这是我正在使用的代码:

const SubDocumentSchema = function () {
  return new mongoose.Schema({
    content: {
      type: String,
      trim: true
    },
    date: {
      type: Date,
      default: Date.now
    }
  })
}

const DocumentSchema = new mongoose.Schema({
    notes: {
      type: [SubDocumentSchema()]
    }
});

const Document = mongooseConnection.model('DocumentSchema', DocumentSchema)
const t = new Document()

t.save()

1 个答案:

答案 0 :(得分:2)

您可以将空数组指定为注释的默认值。而且您不需要为SubDocumentSchema返回一个函数。尝试下面的代码。

df[] <-  lapply(df, function(x) {
    return(colnames(df)[x])
})