[英]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.