我有以下架构,我无法返回我想要的数据。
var Book = new Schema({
ISBN: String,
title: String,
author: String,
image: String,
availability: [{zipcode: String,
total: Number,
loaned: Number
}]
});
我想返回一个随机抽样的项目(可能是25个),其中有可用的项目。在这种情况下,可用性将被定义为总数大于在"可用性和#34;中的至少一个集合中所借出的数量。 (或通过查看所有集合中的总和和借出的总和)。每次我开始,我似乎碰到了一堵墙。有没有人知道这是否可行或如何做?
答案 0 :(得分:0)
我最终通过这样做得到了它:
db.books.aggregate(
[
{
$addFields: {
available: {$gt: [{$sum: "$availability.total"}, {$sum: "$availability.loaned"}]}
}
},
{
$match: {available: true}
},
{
$sample: {size: 25}
}
]
)
我不确定这种方法是否有任何缺点,但是测试有限,它似乎对我有用。