Mongoose:保存具有不同模式的嵌套 JSON
Posted
技术标签:
【中文标题】Mongoose:保存具有不同模式的嵌套 JSON【英文标题】:Mongoose: Save a nested JSON with different Schemas 【发布时间】:2016-03-22 21:38:19 【问题描述】:每个人。我想保存具有多个级别的 JSON 文档,例如,我有一个嵌套的 JSON,其元素级别如下:
"created":"2015-11-10 15:47:41.107Z",
"id_user" : "01",
"version" : "1"
"record" :
"name" : "Carl Powers",
"reference" : [ "url" : "www.test.com", "created" : "2015-11-10 15:47:41.107Z"]
我想保存这个 JSON,对每个元素使用不同的架构,因为我想要在我的 MongoDB 中使用不同的集合,我不想要带有嵌入元素的架构。
var ElementSchema = new Schema(
created : type: Date, default: Date.now,
id_user : String,
version : type: Number, min: 0 ,
record : type: Schema.Types.ObjectId, ref: 'recordSchema'
);
var recordSchema = new Schema(
name : String,
reference : [type: Schema.Types.ObjectId, ref: 'referenceSchema']
);
var referenceSchema = new Schema(
url : String,
created : type: Date, default: Date.now
);
可以使用 mongoose 一次性保存我的示例 JSON。有必要放每个元素的id吗?在这种情况下,一旦收到 JSON,生成每个 id 以及如何放入每个元素的最佳方法是什么?
【问题讨论】:
【参考方案1】:这可以使用子文档来解决,这里有一个例子:
var referenceSchema= new Schema(
url : String,
created : type: Date, default: Date.now
);
var recordSchema = new Schema(
name : String,
reference : type: [referenceSchema]
);
var ElementSchema = new Schema(
created : type: Date, default: Date.now,
id_user : mongoose.Schema.ObjectId,
version : type: Number, min: 0 ,
record : type: recordSchema
);
要保存带有子文档的元素文档:
var element = new ElementSchema(
created: 'date',
id_user: 'user-id',
version: 2
record:
name: 'name',
reference: [
url: 'url1',
created: 'date1'
,
url: 'url2',
created: 'date2'
]
);
Here's the documentation for more queries for sub-documents:
【讨论】:
以上是关于Mongoose:保存具有不同模式的嵌套 JSON的主要内容,如果未能解决你的问题,请参考以下文章