В основном вы можете использовать mongoose virtual populate .Вы можете добиться этого, храня B в отдельном наборе и в основном заполняя массив в схеме A, используя _id для зала, позвольте мне показать вам пример:
Ваша схема B будет выглядеть примерно так
const mongoose = require('mongoose');
const bSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
description: String,
valid: type: Boolean,
name: String
});
bSchema.virtual('a_items', {
ref: 'A', // The model to use
localField: '_id', // Find a_items where `localField`
foreignField: 'b_id', // is equal to `foreignField`
// If `justOne` is true, 'product' will be a single doc as opposed to
// an array. `justOne` is false by default.
justOne: false,
options: { } // Optional query options
});
module.exports = mongoose.model('B', loungeSchema);
А ваша схема A
const mongoose = require('mongoose');
const aSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
b_id: mongoose.Schema.Types.ObjectId, //valid b_Id make it required
name: String,
owner: String
});
module.exports = mongoose.model('A', bSchema);
Чтобы выполнить запрос поиска, который проецирует идентификатор и имя, будет что-то вроде этого:
B.find({}).populate({ path: 'a_items', select: '_id name' }).exec();
массив a_items будет тогдазаселены и имеют связанные объекты.дайте мне знать, если это работает.
В зависимости от вашего случая использования вы можете сделать простой заполнение мангуста