嗨,我正试图从mongodb专门为D-7天提取文件。
例句:如果今天是“星期三”,那么我只想取上一个“星期三”的文件。
我要从前端得到日期,
mongodb中的日期格式:2020-01-15T09:02:48.375+00:00
来自邮递员的日期格式:“2020-01-15”,我在nodejs中将其转换为dateObject .after控制台dateObject Date,如下所示: 2020-01-15T00:00:00.000Z
nodejs查询
const { previousDay,vendorId } = req.body;
console.log(previousDay);
let date = new Date(previousDay);
console.log(date);
const vendorOrder = await Order.find(
{orderCreatedBy: vendorId,orderCreatedOn: date});
return res.status(200).json({
vendorOrder
});
} catch (error) {
res.send(error);
}
};邮递员Req.body
{ "previousDay":"2020-01-15"}邮递员响应返回空数组
[]Mongodb集合
_id:5e26be38c13b7149d0a95111
isApproved:false
vendorOrder:[]
frequency:"WE"
orderCreatedBy:5e25550a3405363bc4bf86c1
submittedTo:5e2555363405363bc4bf86c2
dealerOrder:[]
orderCreatedOn:2020-01-15T09:02:48.375+00:00
__v:0发布于 2020-01-22 11:30:35
现在出现了匹配日期的问题,因为mongodb将匹配完整的日期,包括timeStamp,所以在保存文档时,要设置固定的时间戳和日期。
让我们用这个例子来理解。
保存文档时,将orderCreatedOn的值设置为下面的代码片段,编辑
exports.createOrder = async (req, res, next) => {
req.body['orderCreatedOn'] = new Date().toISOString().split("T")[0] + "T18:30:00.000Z";
const order = new Order({ ...req.body, });
try {
await order.save();
res.status(201).json({ message: "Order created successfully!", order: order, orderId: order._id });
}
catch (e) {
res.send(e);
}
};因此,数据库中的日期将被存储为,2020-01-15T18:30:00.000Z
现在,当您找到7天前的日期时,然后在find控制器中添加下面的代码片段。
var someDate = new Date();
var numberOfDaysToSubtract = -7; //this refers to date of seven days before
someDate.setDate(someDate.getDate() + numberOfDaysToSubtract);
console.log("Date of seven days before ===>" , someDate);
var date = someDate.toISOString().split("T")[0] + "T18:30:00.000Z";
date = new Date(date);
//And the rest code is same.
console.log(" =======+++> ", new Date(date));希望你能找到解决办法。
发布于 2020-01-22 13:57:41
MongoDB模式:
orderCreatedOn: {
type: Date,
default: new Date().toISOString().split("T")[0] + "T18:30:00.000Z"
},Nodejs控制器:请参阅@ Pushprajsinh答复
https://stackoverflow.com/questions/59858424
复制相似问题