2017-03-10 58 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

獨特的領域是一樣的嗎? –