元组(数组)作为mongoose.js中的属性

时间:2012-08-18 02:46:09

标签: mongodb mongoose

MongoDB和mongoose.js特别允许元组作为属性。例如,MongoDB documentation has this example属性comments本身就是一个具有属性[{body: String, date: Date}]的对象数组。耶!

var blogSchema = new Schema({
  title:  String,
  author: String,
  body:   String,
  comments: [{ body: String, date: Date }],
  date: { type: Date, default: Date.now },
  hidden: Boolean,
  meta: {
    votes: Number,
    favs:  Number
  }
})

现在当我坚持使用MongoDB时,blogSchema的每个实例不仅为_id获得了自己的值(例如502efea0db22660000000002),而且comment的每个值都有自己的_id { {1}}字段。

在大多数情况下我并不在乎,但在我的应用程序中,模拟comments可能有数千个值。每个都有_id的巨大价值。

我能预防吗?我永远不需要单独引用它们。或者我应该学会不再担心并喜欢这个独特的标识符?我从小就编写了Vic20和TRS80的编程,因此可能会因为浪费内存/存储而过于偏执。

1 个答案:

答案 0 :(得分:3)

可以通过将_id架构选项设置为noId来禁用true。要传递该选项,您需要传递模式实例,而不是使用对象文字:

// instead of this...
comments: [{ body: String, date: Date }]

// do this...
var commentSchema = new Schema({ body: String, date: Date }, { noId: true });
var blogSchema = new Schema({
  ..
  comments: [commentSchema]
})