Mangusto povoar incorporado

Eu uso o Mongoose.js e não consigo resolver problemas com documentos de hierarquia de 3 níveis.

Existem 2 maneiras de fazer isso.

Primeiro - sem refs.

C = new Schema({
    'title': String,
});

B = new Schema({
    'title': String,
    'c': [C]
});

A = new Schema({
    'title': String,
    'b': [B]
});

Eu preciso mostrar o registro C. Como posso preencher / encontrá-lo, sabendo apenas _id de C?

Eu estava tente usar:

A.findOne({'b.c._id': req.params.c_id}, function(err, a){
    console.log(a);
});

Mas eu não sei como obter a partir de um objeto de retorno somente objeto c que eu preciso.

Segundo se trabalhando com refs:

C = new Schema({
    'title': String,
});

B = new Schema({
    'title': String,
    'c': [{ type: Schema.Types.ObjectId, ref: 'C' }]
});

A = new Schema({
    'title': String,
    'b': [{ type: Schema.Types.ObjectId, ref: 'B' }]
});

Como preencher todos os registros B, C para obter hierarquia?

Eu estava tentando usar algo assim:

A
.find({})
.populate('b')
.populate('b.c')
.exec(function(err, a){
    a.forEach(function(single_a){
        console.log('- ' + single_a.title);
        single_a.b.forEach(function(single_b){
            console.log('-- ' + single_b.title);
            single_b.c.forEach(function(single_c){
                console.log('--- ' + single_c.title);
            });
        });
    });
});

Mas ele retornará indefinido para single_c.title. Eu há maneira de preenchê-lo?

Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion