首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用日期从mongodb驱动程序获取文档

使用日期从mongodb驱动程序获取文档
EN

Stack Overflow用户
提问于 2020-01-22 11:14:00
回答 2查看 134关注 0票数 2

嗨,我正试图从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查询

代码语言:javascript
复制
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

代码语言:javascript
复制
{ "previousDay":"2020-01-15"}

邮递员响应返回空数组

代码语言:javascript
复制
[]

Mongodb集合

代码语言:javascript
复制
_id:5e26be38c13b7149d0a95111
isApproved:false
vendorOrder:[]
frequency:"WE"
orderCreatedBy:5e25550a3405363bc4bf86c1
submittedTo:5e2555363405363bc4bf86c2
dealerOrder:[]
orderCreatedOn:2020-01-15T09:02:48.375+00:00
__v:0
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-22 11:30:35

现在出现了匹配日期的问题,因为mongodb将匹配完整的日期,包括timeStamp,所以在保存文档时,要设置固定的时间戳和日期。

让我们用这个例子来理解。

保存文档时,将orderCreatedOn的值设置为下面的代码片段,编辑

代码语言:javascript
复制
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控制器中添加下面的代码片段。

代码语言:javascript
复制
    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));

希望你能找到解决办法。

票数 2
EN

Stack Overflow用户

发布于 2020-01-22 13:57:41

MongoDB模式:

代码语言:javascript
复制
orderCreatedOn: {
      type: Date,
      default: new Date().toISOString().split("T")[0] + "T18:30:00.000Z"
    },

Nodejs控制器:请参阅@ Pushprajsinh答复

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59858424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档