2015-12-16 35 views
4

每個人。我想保存與多層次JSON文件,例如,我有一個嵌套的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} 
    }); 

可以使用貓鼬一次性完整地保存我的示例JSON。有必要把每個元素的ID?在這種情況下,一旦接收到JSON,生成每個ID以及如何放入每個元素的最佳方法是什麼?

回答

0

這可以使用子文檔,下面是一個例子來解決:

var referenceSchema = new Schema({ 
    url : String, 
    created : {type: Date, default: Date.now} 
}); 

var recordSchema = new Schema({ 
    name : String, 
    reference : [referenceSchema] 
}); 

var ElementSchema = new Schema({ 
created : {type: Date, default: Date.now}, 
id_user : String, 
version : { type: Number, min: 0 }, 
record : 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: