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的编程,因此可能会因为浪费内存/存储而过于偏执。
答案 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]
})