【问题标题】:Mongoose: Save a nested JSON with different SchemasMongoose:保存具有不同模式的嵌套 JSON
【发布时间】: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 以及如何放入每个元素的最佳方法是什么?

【问题讨论】:

    标签: json node.js mongodb mongoose


    【解决方案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:

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 2014-11-09
      • 2017-07-06
      • 2015-07-03
      相关资源
      最近更新 更多