2017-03-10 57 views
0

我有一个MongoDB的模型MongoDB的架构验证外部对象可选的,但内部对象需要

optionalRoot: { 
     optionalA: { 
      requiredForA1: { type: String, required: true }, 
      requiredForA1: { type: String, required: true } 
     }, 
     optionalB: { 
      requiredForB1: { type: String, required: true }, 
      requiredForB1: { type: String, required: true } 
     }, 
} 

它甚至有可能在模式表述?本质上optionalAoptionalB可能会也可能不存在,但如果他们这样做,他们应该包含requiredFor*每个

回答

1

我会做你的情况是打破三个集合中的架构。这将是这样的:

OptionalRoot: { 
    optionalA: [optionalAId], 
    optionalB: [optionalBId] 
} 

OptionalA: { 
    requiredForA1: {type: String, required: true} 
    requiredForA2: {type: Number, required: true} 
} 

OptionalB : { 
    requiredForB1: {type: String, required: true} 
    requiredForB2: {type: Date, required: true} 
} 

希望我的回答是有帮助的。

+0

虽然这会起作用,但我有一大堆独特的'可选'对象,所以这将导致数据库中的集合爆炸,并且会不必要地使查找复杂化。 – Raza

+0

独特的领域是一样的吗? –