У меня есть документ пользователя и документ транзакции.
- У транзакции есть владелец (пользователь),
- У пользователя есть набор транзакций, размер которых не ограничен .
Мне нужно получить пользовательские транзакции и отфильтровать их по некоторым свойствам, таким как диапазон дат и платный или неоплаченный.
Поскольку моя схема транзакций не ограничена, я использовал mon goose виртуальных машин для заполнения Пользователя транзакциями, но, как я вижу, невозможно выполнять запросы MongoDb к виртуальным объектам, потому что на самом деле этого нет в базе данных.
Схема использования:
const userSchema = new mongoose.Schema(
{
name: {
type: String,
required: true,
},
email: {
type: String,
required: true,
trim: true,
unique: true,
},
...
},
);
userSchema.virtual('transactions', {
ref: 'Transaction',
localField: '_id',
foreignField: 'owner',
});
Схема транзакции:
const transactionSchema = new Schema({
amount: {
type: Number,
required: true,
},
...
owner: {
type: Schema.Types.ObjectId,
ref: 'User',
required: true,
},
});
Мне кажется, что я допустил ошибку при моделировании базы данных таким образом. Как лучше всего подходить к этому случаю?