2

MongoDB,特别是 mongoose.js,允许元组作为属性。例如,MongoDB 文档有这个例子,其中属性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字段。

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

我可以防止吗?我永远不需要单独提及它们。还是我应该学会停止担心并喜欢唯一标识符?我从小就对 Vic20 和 TRS80 进行编程,因此可能对浪费内存/存储过于偏执。

4

1 回答 1

4

_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]
})
于 2012-08-18T05:03:04.510 回答