我有一个用户文档和一个交易文档。
- 交易有一个所有者(用户),
- 用户有一组没有增长限制的交易。
我需要获取用户交易并通过日期范围和付费或非付费等属性对其进行过滤。
由于我的事务架构是无限的,我使用猫鼬虚拟来填充用户的事务,但正如我所见,不可能对虚拟进行 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,
},
});
我觉得我在以这种方式建模数据库时犯了一些错误。对于这种情况,哪种方法最好?