Как заполнить поддокумент другой коллекции в мангусте?

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

Я не могу найти это с населением,o.B является идентификатором объекта, o.B.name не определено.

BSchema - это поддокумент ASchema, CSchema имеет ссылку на соединение BSchema.

Данные как это:

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
  }]

Я хочу найти все CSchema с именем CSchema "c_xxx", и показывает имя B Cchema и имя A.

Как этот результат: {CName: "c_xxx", BName: "b_xxx", AName: "a_xxx"}