sql >> Database >  >> NoSQL >> MongoDB

mongoose - ObjectId die verwijst naar een subdocument

Ja, het is mogelijk, maar je hebt een paar opties.

Optie 1:C als subdocument

Als je echt subdocumenten wilt gebruiken, hoef je geen apart model aan te maken. U moet uw verwijzing naar de 'c'-array wijzigen.

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); 

Optie 2:C als model

(Ik presenteer dit alleen als alternatief - aangezien uw voorbeeld overbodig lijkt omdat u 'C' als een afzonderlijk model en als een subdocument maakt)

Als alternatief kan het zinvol zijn om afzonderlijke collecties te hebben, u kunt voor elk een mangoestmodel maken. Elk zal een aparte verzameling zijn:

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

In dit geval wilt u misschien rechtstreeks naar elk model verwijzen:

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

Het punt

Ja, het is mogelijk, maar je moet kiezen of je C als model of subdocument wilt.



  1. Update array in mongo en upsert

  2. Query uitvoeren op matrix van geneste documenten voor hoogste waarde van veld

  3. MongoDB-aggregatievergelijking:group(), $group en MapReduce

  4. Documenten importeren in MongoDB vanuit een array van JSON-documenten