【发布时间】:2018-10-21 23:38:00
【问题描述】:
我有以下架构,但无法返回我想要的数据。
var Book = new Schema({
ISBN: String,
title: String,
author: String,
image: String,
availability: [{zipcode: String,
total: Number,
loaned: Number
}]
});
我想返回一个随机的项目样本(可能是 25 个),其中有可用的项目。在这种情况下,可用性将被定义为总数大于在“可用性”下的至少一个集合中借出的数量(或通过查看所有集合中的总数和借出的总和)。每次我开始,我似乎都撞到了一堵墙。有谁知道这是否可行或如何做到?
【问题讨论】:
-
您可能需要为此使用
aggregation,因为简单的find根本行不通。您应该能够对文档进行某种投影,以找到其描述大致类似于total > loaned,然后limit将您的结果变为您想要的数量。请务必查看聚合并研究聚合管道和运算符的工作原理。尝试一下,如果您遇到问题,请使用您迄今为止管理的聚合代码返回一个新问题。届时您将能够获得更多帮助:) -
感谢@B.Fleming。我一直在使用聚合,这就是我一直卡住的地方。关于寻找方向的好地方的任何指示?我的模式对我来说很有意义,但我在任何地方的示例中都找不到任何可比较的模式,并且使用数组元素让我有点困惑。任何帮助表示赞赏。
-
我不确定具体的资源,不幸的是,只有 MongoDB 文档。但我会给你一个提示:
$unwind将帮助你解决处理数组的问题,并允许你单独处理数组元素。有很多像这样有用的运算符。
标签: mongodb mongoose aggregation-framework