Wie füllt man das Filialdokument einer anderen Sammlung im Mungo auf?

ASchema = new mongoose.Schema({
  name: String,
  B: [BSchema]
});

var BSchema = new Schema({
  name: String
});

var CSchema = new Schema({
  name: String,
  B: {
    type: Schema.ObjectId,
    ref: 'BSchema'
  }
});

//This is OK, but not one time mongoose search:
CSchema.find({
    name: 'C_xxx'
  }).exec(function(err, docC) {

  docC.forEach(function(o) {
    var BId = o.B;
    ASchema.findOne({
        'B._id': BId
      }, {
        'B.$': 1
      }
      ).exec(function(err, docA) {
      var Bname = docA.B[0].name;
      var Cname = docA.name;
    });

  });
});

//wrong in populate:
CSchema.find({
    name: 'C_xxx'
  })
  .populate('ASchema.B')
  .exec(function(err, docC) {
  docC.forEach(function(o) {
    var Bname = o.B.name;
    //ERROR:o.B is a objectId,o.B.name is undefined
    //Aname can't find
  });
});

Ich kann es nicht mit bevölkern finden,o.B ist eine objectId, o.B.name ist undefiniert.

BSchema ist ein Filialdokument von ASchema, CSchema hat eine ref-Verbindung von BSchema.

Daten wie diese:

ASchema = {
  name: "A_xxx",
  B: [{
      _id: 1,
      name: "B_xxx"
    }, {
      _id: 2,
      name: "B_xxx"
    }]
}
CSchema = [{
    name: "C_xxx",
    B: 1
  }, {
    name: "C_xxx",
    B: 2
  }]

Ich möchte alle CSchema finden, deren Name CSchema "c_xxx" ist, und die den Namen von CSchema B und den Namen von CSchema A anzeigen.

Dieses Ergebnis gefällt mir: {CName: "c_xxx", BName: "b_xxx", AName: "a_xxx"}