【问题标题】:Adding support for multiple subdocuments within a mongoose schema?在猫鼬模式中添加对多个子文档的支持?
【发布时间】:2014-03-12 21:32:06
【问题描述】:

我刚开始使用猫鼬,我为我的数据声明了一个模式。我想知道如何将更多子文档声明为同一类型。假设我想添加第二个或第三个位置子文档,我该怎么做?

var nest_schema = mongoose.Schema({
company_name: String,
website: String,
chain: Boolean,
date: {
    date_added: Date,
    date_lastupdated: { type: Date, default: Date.now},     
    },
rating: {
    yelp_rating: Number,
    yelp_reviews: Number,
    user_rating: Number,
    },
locations: {
    location_number: Number,
    location_name: String,
    address: String,
    phone: String, 
    hours: {
        Monday: String,
        Tuesday: String,
        Wednesday: String,
        Thursday: String,
        Friday: String,
        Saturday: String,
        Sunday: String,
        },
drinks: {
    drink: String,
        sizes: {
            small: Number,
            medium: Number,
            large: Number,
            }
        }
        }
});

【问题讨论】:

    标签: javascript node.js mongodb mongoose database


    【解决方案1】:

    定义另一个架构并将其嵌入到您的主架构中:

    var nest_schema = mongoose.Schema({
      company_name: String,
      website: String,
      chain: Boolean,
      date: {
        date_added: Date,
        date_lastupdated: { type: Date, default: Date.now},     
      },
      rating: {
        yelp_rating: Number,
        yelp_reviews: Number,
        user_rating: Number,
      },
      locations: [locationSchema],
      drinks: [drinkSchema]
    });
    
    var locationSchema = mongoose.Schema({
      number: Number,
      name: String,
      address: String,
      phone: String, 
      hours: {
        Monday: String,
        Tuesday: String,
        Wednesday: String,
        Thursday: String,
        Friday: String,
        Saturday: String,
        Sunday: String,
      }
    });
    

    您可能还想让饮料有自己的架构:

    var drinksSchema = mongoose.Schema({ 
      drinks: {
        drink: String,
        sizes: {
          small: Number,
          medium: Number,
          large: Number,
        }
      }
    });
    

    【讨论】:

    • 您需要像添加到数组中一样添加这些子文档。所以像nest_schema.location.push({ subdoc stuff here });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 2019-11-20
    • 2021-09-08
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多