gpt4 book ai didi

mongodb - 在 Mongoose 中进行小时/日/月/年的范围查询

转载 作者:IT老高 更新时间:2023-10-28 13:31:40 28 4
gpt4 key购买 nike

试图弄清楚如何做到这一点。基本上我想按我提交的时间/天/月/年进行排序。

每个 submission 都有一个 created 字段,其中包含 "created"形式的 Mongoose Date 对象:ISODate("2013-03-11T01:49 :09.421Z")。我需要在 find() 条件下与此进行比较吗?

这是我当前的查询(我将它包装在一个计数中以用于 FWIW 的分页目的,所以忽略该部分):

  getSubmissionCount({}, function(count) {

// Sort by the range
switch (range) {
case 'today':
range = now.getTime();
case 'week':
range = now.getTime() - 7;
case 'month':
range = now.getTime() - 31; // TODO: make this find the current month and # of days in it
case 'year':
range = now.getTime() - 365;
case 'default':
range = now.getTime();
}

Submission.find({
}).skip(skip)
.sort('score', 'descending')
.sort('created', 'descending')
.limit(limit)
.execFind(function(err, submissions) {
if (err) {
callback(err);
}

if (submissions) {
callback(null, submissions, count);
}
});
});

有人可以帮我解决这个问题吗?使用当前的代码,无论时间范围如何,它都会给我所有提交,所以我显然没有正确地做某事

最佳答案

我认为,您正在寻找 MongoDB 中的 $lt(Less than) 和 $gt(Greater Than) 运算符。使用上述操作符可以按时间查询结果。

我在下面添加可能的解决方案。

var d = new Date(),
hour = d.getHours(),
min = d.getMinutes(),
month = d.getMonth(),
year = d.getFullYear(),
sec = d.getSeconds(),
day = d.getDate();


Submission.find({
/* First Case: Hour */
created: { $lt: new Date(), $gt: new Date(year+','+month+','+day+','+hour+','+min+','+sec) } // Get results from start of current hour to current time.
/* Second Case: Day */
created: { $lt: new Date(), $gt: new Date(year+','+month+','+day) } // Get results from start of current day to current time.
/* Third Case: Month */
created: { $lt: new Date(), $gt: new Date(year+','+month) } // Get results from start of current month to current time.
/* Fourth Case: Year */
created: { $lt: new Date(), $gt: new Date(year) } // Get results from start of current year to current time.
})

关于mongodb - 在 Mongoose 中进行小时/日/月/年的范围查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17008683/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com