sql >> Databáze >  >> NoSQL >> MongoDB

mongoose – ObjectId, které odkazuje na dílčí dokument

Ano, je to možné, ale máte několik možností.

Možnost 1:C jako vnořený dokument

Pokud opravdu chcete používat vnořené dokumenty, nemusíte vytvářet samostatný model. Musíte změnit svůj odkaz na pole '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); 

Možnost 2:C jako model

(Uvádím to pouze jako alternativu - protože váš příklad se zdá nadbytečný, protože vytváříte 'C' jako samostatný model i jako dílčí dokument)

Alternativně může mít smysl mít samostatné kolekce, pro každou můžete vytvořit model mongoose. Každá bude samostatnou sbírkou:

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

V tomto případě můžete chtít přímo odkazovat na každý model:

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

The Point

Ano, je to možné, ale musíte si vybrat, zda chcete C jako model nebo vnořený dokument.



  1. Jak se to vybere v MongoDB

  2. Správa uživatelů databáze s ClusterControl

  3. Mapreduce v mongodb

  4. Jak potlačit sloupec v mongodb pomocí ovladačů Java?