2015-12-16 5 views
4

все. Я хочу, чтобы сохранить JSON документов с большим количеством уровней, например, у меня есть вложенное JSON с уровнями элементов, как это:Mongoose: Сохраните вложенный 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, полностью, за один раз, используя мангуст. Нужно ли вводить идентификаторы каждого элемента? В этом случае, как лучше всего создать каждый идентификатор и как поместить в каждый элемент, как только будет получен JSON?

ответ

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:

Смежные вопросы