sql >> Base de Datos >  >> NoSQL >> MongoDB

mongoose - ObjectId que hace referencia a un subdocumento

Sí, es posible, pero tienes algunas opciones.

Opción 1:C como subdocumento

Si realmente quiere usar subdocumentos, no necesita crear un modelo separado. Debe cambiar su referencia a la matriz '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); 

Opción 2:C como modelo

(Solo presento esto como una alternativa, ya que su ejemplo parece redundante ya que crea 'C' como un Modelo separado y como un subdocumento)

Alternativamente, puede tener sentido tener colecciones separadas, puede crear un modelo de mangosta para cada una. Cada uno será una colección separada:

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

En este caso, es posible que desee hacer referencia directa a cada modelo:

var C = new Schema({...});  
var B = new Schema({c: { type: ObjectId, ref: 'ModelC' }});  
var A = new Schema({c: { type: ObjectId, ref: 'ModelC' }); 

El Punto

Sí, es posible, pero debe elegir si desea C como modelo o subdocumento.