2017-02-23 193 views
2

這裏是我的模型文件:如何計算和計算兩個日期之間的字段?

income.js

var incomeSchema = new schema({ 
    issuedBy: { type: schema.Types.ObjectId, ref: 'user' }, 
    amount: {type: Number, default: 0}, 
    content: { type: String, default :''}, 
    note: { type: String, default: ''} 
}, {timestamps: true}); 

現在我要總結量的所有值2日期間生產數所有這些日期之間的數據導出到一個表。

例如:我要總結2017年2月12日和2017年2月23日之間的所有量,顯示它是這樣的:

1.Number交易:20

2.Total:$ 2500個

3.顯示兩個日期之間所有數據的表格。

我曾嘗試使用

collection.find({'createdAt': {$gte: Date, $lte: Date}} 

一些答案,但我仍然無法做到這一點。

任何解決方案,將不勝感激。謝謝。

回答

2

你可以嘗試下面的聚合。

db.collection.aggregate(
    [{ 
     $match: { 
      createdAt: { 
       $gte: new Date('2017-02-12'), 
       $lte: new Date('2017-02-23') 
      } 
     } 
    }, { 
     $group: { 
      _id: null, 
      Total: { 
       $sum: "$amount" 
      }, 
      NoOfTransactions: { 
       $sum: 1 
      } 
     } 
    }] 
) 

您可以使用$ out階段寫入新集合。

1

你可以用簡單的方法做到這一點。

db.collection.find({ "field" : { $gt: value1, $lt: value2 } }); // value1 < field < value 

或 首先,在架構,您需要定義日期字段的類型爲:

{date: { type: Date, default: Date.now }} 

然後當u查詢的日期範圍:

db.collection.find({"field": {'$gte': new Date('3/1/2014'), '$lt': new Date('3/16/2014')}}); 
+0

感謝您的回覆。我嘗試了你的建議,但我只檢索了1條記錄。我在我的問題中提到你的建議。 – user3881004

+0

可能你只有一個記錄在你的收藏中,符合我們的要求 –

+0

我發現問題......我認爲$ lte小於或等於,但它似乎只能檢索較小的記錄。我試圖將日期更改爲前一天,並且運行良好。 – user3881004

相關問題