Mungobestand eingebettet

Ich verwende Mongoose.js und kann das Problem mit einem Hierarchie-Dokument mit drei Ebenen nicht lösen.

Es gibt zwei Möglichkeiten, dies zu tun.

Zuerst - ohne refs.

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

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

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

Ich muss C-Aufzeichnung zeigen. Wie kann ich es füllen / finden, nur _id von C kennend?

Ich habe versucht zu benutzen:

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

Aber ich weiß nicht, wie ich ein Objekt von returnet nur c Objekt, das ich brauche.

Zweite Wenn Sie mit refs arbeiten:

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' }]
});

Wie fülle ich alle B- und C-Datensätze auf, um eine Hierarchie zu erhalten?

Ich habe versucht, so etwas zu verwenden:

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

Es wird jedoch undefined für single_c.title zurückgegeben. Kann ich es so bevölkern?

Vielen Dank.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage