Я сталкиваюсь с проблемой, когда мне требуется определенный c набор по умолчанию для схемы с несколькими вложенными подсхемами. При настройке по умолчанию _id не добавляется, но мне нужно, чтобы можно было запрашивать вложенные документы. Реструктуризация затруднена, потому что мне нужно использовать подсхему в других местах. Решения, которые я нашел, включали установку по умолчанию для наиболее глубоко вложенных подсхем, но это невозможно, поскольку мне нужно иметь разные значения по умолчанию для подсхемы.
Вручную с помощью ObjectId () в результатах по умолчанию схемы в дубликатах ObjectIds.
Также приветствуются альтернативы схемам по умолчанию с тем ограничением, что их необходимо применять к новым и существующим документам.
Вот воспроизводимый пример:
(function () {
'use strict';
const mongoose = require('mongoose');
const BoltSchema = new mongoose.Schema({
material: String,
});
const TireSchema = new mongoose.Schema({
bolts: [BoltSchema],
});
const CarSchema = new mongoose.Schema({
tires: {
type: {
frontLeft: TireSchema,
frontRight: TireSchema,
rearLeft: TireSchema,
rearRight: TireSchema,
},
default: {
frontLeft: {
bolts: [
{
material: 'steel',
},
{
material: 'steel',
}
],
},
frontRight: {
bolts: [
{
material: 'brass',
},
{
material: 'brass',
}
],
},
},
},
});
const Car = mongoose.model('Car', CarSchema);
const car = new Car();
car.save();
})();