我正在解決一個問題,在我的資料庫中應該每天都有多個條目。每個條目都包含一個時間戳。問題是我應該找出每個月輸入資料的天數。例如:如果用戶在 5 月每 2 天發送一次訊息。我的回答是:“用戶在 5 月使用了訊息功能 15 天”。現在如果用戶在 5 月每 2 天發送 5 條訊息。答案仍然是 15。我只計算用戶使用該應用程式的天數。
使用此查詢:
model.find({
date: {
$gte: new Date(startOfMonth),
$lt: new Date(endOfMonth)
}
})
我能夠找到特定月份的所有資料條目。資料可能如下所示:
Date: dd/mm/yy Message:
1/5/2022 "Hello"
1/5/2022 "World"
1/5/2022 "!"
5/5/2022 "Hello World!"
8/5/2022 "Hello World!"
期望的答案是 5 月的 3 個獨特的日子。
我如何使用 mongodb 實作這一目標?想到的最簡單的答案是使用其他查詢按唯一日期分組,但我不知道如何使用 mongo 來做到這一點,前提是我需要訪問日期。
uj5u.com熱心網友回復:
這可能會解決您的問題。它將回傳不同的訊息。
Model.aggregate(
[
{ "$match": {
"date": {
"$gte": new Date(startOfMonth), "$lt": new Date(endOfMonth)
}
}},
{ "$group": {
"_id": {
"year": { "$year": "$date" },
"month": { "$month": "$date" },
"day": { "$dayOfMonth": "$date" }
}
"count": { "$sum": 1 }
}}
],
function(err,result) {
// do something with result
}
);
uj5u.com熱心網友回復:
如果您直接存盤日期,則可以使用distinct 。
db.collection.distinct({date:{$gte:new Date(startOfMonth),$lt:new Date(endOfMonth)}}).length
注意:如果您存盤完整的時間戳而不是日期,這可能不起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483609.html
標籤:javascript 节点.js 数据库 mongodb 猫鼬
