MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

mangusto - ObjectId que faz referência a um subdocumento


Sim, é possível, mas você tem algumas opções.

Opção 1:C como um subdocumento

Se você realmente deseja usar subdocumentos, não precisa criar um modelo separado. Você precisa alterar sua referência ao array 'c'.
var C = new Schema({...});  
var B = new Schema({c: [C]});  
var A = new Schema({c: { type: ObjectId, ref: 'ModelB.c' });  

var Model_A = mongoose.model('ModelA', A);  
var Model_B = mongoose.model('ModelB', B); 

Opção 2:C como modelo

(Eu apenas apresento isso como uma alternativa - já que seu exemplo parece redundante, pois você cria 'C' como um modelo separado, bem como um subdocumento)

Alternativamente, pode fazer sentido ter coleções separadas, você pode criar um modelo de mangusto para cada uma. Cada um será uma coleção separada:
var Model_A = mongoose.model('ModelA', A);  
var Model_B = mongoose.model('ModelB', B);  
var Model_C = mongoose.model('ModelC', C);

Nesse caso, você pode querer referenciar diretamente cada modelo:
var C = new Schema({...});  
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});  
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' }); 

O ponto

Sim, é possível, mas você precisa escolher se deseja C como modelo ou subdocumento.