1

我期待數與符合我查詢的文件名稱金額中的所有列的值,貓鼬總結所有文檔

tickets.count({time: {$gte: a}, time: {$lte: tomorrow}}).then(function (numTickets) { 

我怎樣才能稱爲量文檔列的總結果?

例如,如果我有:

{ time: 20, amount: 40} 
{ time: 40, amount: 20} 

它會返回總量(60)?

請記住,我確實需要在查詢中使用{time: {$gte: a}, time: {$lte: tomorrow}

我該怎麼做?

回答

0

使用$match$group運營商,即是這樣的

​​

例如用像這樣

/* 1 */ 
{ 
    "_id" : ObjectId("57e0ed40828913a99c2ceb46"), 
    "time" : 20, 
    "amount" : 40 
} 

/* 2 */ 
{ 
    "_id" : ObjectId("57e0ed40828913a99c2ceb47"), 
    "time" : 40, 
    "amount" : 20 
} 

/* 3 */ 
{ 
    "_id" : ObjectId("57e0ed40828913a99c2ceb48"), 
    "time" : 50, 
    "amount" : 10 
} 

/* 4 */ 
{ 
    "_id" : ObjectId("57e0ed40828913a99c2ceb49"), 
    "time" : 10, 
    "amount" : 5 
} 

管道的測試數據(帶虛設時間範圍)像與aggregation framework嘗試以下

db.tickets.aggregate([ 
    { $match: { time: {$gte: 20, $lte: 40} } }, 
    { $group: { _id: null, amount: { $sum: "$amount" } } } 
]) 

會給你這樣的結果

/* 1 */ 
{ 
    "_id" : null, 
    "amount" : 60 
} 

Pipeline in action

+0

將與貓鼬過工作? 原因 tickets.aggregate([{$ match:{time:{$ gte:a,$ lte:tomorrow}}},{$ group:{_id:null,amount:{$ sum:「$ amount」} }}]。然後(功能(測試){ ]不會爲我工作,在它不執行它的條款 – maria

+0

門票是我的貓鼬模型是的,你會看看teamviewer?,無論如何,我會看看,並接受你的答案:) – maria

+0

我想你的回調應該有兩個參數(對於錯誤和結果)。 [這](http://stackoverflow.com/questions/26623141/mongoose-aggregate-and-sort)SO問題顯示如何使用貓鼬聚集管道 - 希望有所幫助。否則我會嘗試自己今晚測試 – DAXaholic