让我们说我有以下架构:
书
客户
出租
我想获得一个客户租用的图书清单,按租金日期排序。这样做的愚蠢方法是获得一份排序的租金清单,然后对该清单中的每本书执行一次“查找”。
必须有更好的方法,可能使用单个查询。随意提出架构更改,例如在Book或Customer中嵌入一组“Rent”。
由于
答案 0 :(得分:1)
使用Mongoose对参考population的支持来有效地执行此操作:
Rent.find({customer_id: custid})
.sort({rentedAt: 1})
.populate('book_id')
.exec(function(err, rents) {
// The book_id property of each rents doc contains its referenced book doc.
});
Mongoose会首先执行Rent查询,然后通过第二个查询跟进,以获取所有引用的书籍。
确保您的Rent
架构将book_id
定义为适当的参考,如:
book_id: {type: Schema.Types.ObjectId, ref: 'Book' }