猫鼬如何计算一个月中唯一的日子?



我正在研究一个问题,在我的数据库中,每天应该有多个条目。每个条目包含一个时间戳。问题是我应该找到每个月有多少天的数据已输入。例如:如果用户在五月每两天发送一条消息。我的回答是:"用户在5月份使用了15天的留言功能"。现在如果用户在五月每两天发送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,如果我需要访问日期。

这可能解决您的问题。它将返回不同的消息


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
}
);

可以使用distinct
db.collection.distinct({date:{$gte:new Date(startOfMonth),$lt:new Date(endOfMonth)}}).length
如果您直接存储它的日期。

注意:如果您存储完整的时间戳而不是日期,则可能无法工作。

相关内容

最新更新