如何解决如何从mongodb查询的日期范围中排除星期日?
我需要每三天获取一次每个用户的交易。我想知道三天内没有达到一定数量(200)的用户,然后获取每个用户的所有交易的总和。我想排除周日,因为周日的交易量总是很低。
我想确保这是从数据库中正确完成的,因为来自每个用户的交易可能会达到数千甚至数百万。
我正在使用 dayjs 来操纵时间,但我没有做对
我已经能够获得前三个日期和当前日期。上一个日期将是开始日期,当前日期将是结束日期。
但我需要删除星期日是否在范围内并使用它来查询数据库。
这就是我所做的,我还没有接近修复它。
如何通过dateCreated查询交易表并排除星期日?
架构示例
export const TransactionSchema = new mongoose.Schema({
description: {
type: String
},ref: {
type: String,required: true
},userID: {
type: mongoose.SchemaTypes.ObjectId,ref: 'User'
},amount: {
type: Number,required: true,},commission: {
type: Number,default: 0
},responseDescription: {
type: String
},authCode: {
type: Number
},isDeleted: {
type: Boolean,default: false
},dateCreated: {
type: Date,default: Date.now
},dateUpdated: {
type: Date,required: false
},openingBalance: {
type: Number
},closingBalance: {
type: Number
},})
方法
async getUserRequiredTargetTrans() {
let now = dayjs();//endDate
let fromThreeDays = now.subtract('2','day')
let sunday = now.day(0)
let withOutSunday = now.diff(fromThreeDays);//startDate
const response = await this.transactionModel.find({ isDeleted: false,dateCreated: { $gte: withOutSunday,$lt: now } })
解决方法
要从日期范围中排除星期日,您可以像这样使用 $where 运算符:
async getUserRequiredTargetTrans() {
let from = dayjs();//endDate
let fromThreeDays = now.subtract('2','day')
const response = await this.transactionModel.find({ isDeleted: false,dateCreated: { $gte: fromThreeDays,$lt: now },// exculde sunday
$where: `function() { return this.dateCreated.getDay() !== 0;}`
} )
,
你传了个dayjs
,不知道能不能直接用。也许你必须使用
find({ isDeleted: false,dateCreated: { $gte: withOutSunday.toDate(),$lt: now.toDate() } })
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。