[英]Mongoose aggregation, how perform 'select as'?
我刚刚开始使用Mongoose.js库使用Mongo Db。 我有两个模式,订单和付款。 我想做一个简单的查询,以获取具有该订单所有付款总和属性的所有订单。
架构
订购
{ name : String }
付款
{ date : Date, order : Schema.ObjectId, sum : Number }
在mysql中,我会这样做:
select *,(select SUM(sum) from payments where payments.order = orders.id group by payments.order) as sum from orders
我正在寻找用于构建查询的聚合方法。 但是我发现的所有示例都是针对单个对象的。 我毫不费力地获得单笔订单的总和(使用findOne()和聚合)。 但是我如何处理订单?
在MongoDB中只有一个查询具有您所拥有的模式设计是无法做到这一点的。 您的架构对于关系型数据库来说是很好的选择,但对于NoSQL而言可能不是理想的选择。
使用您的模式,您将必须执行两个查询:
另一种方案是仅拥有一个订单文件集合,并将付款作为子文件存储在订单文件中,例如。 订单看起来像这样:
{
name: "Foo"
payments: [ { date: xxxx, sum: 42.00}, { date: yyyy, sum: 12.00} ]
}
查看有关数据模型的Mongo文档以了解更多信息: http : //docs.mongodb.org/manual/data-modeling/#data-models
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.