【问题标题】:Mongodb query according to datesMongodb根据日期查询
【发布时间】:2020-04-17 08:29:34
【问题描述】:

您好,我正在尝试查找仅在 D-1 天保存的文档

问题:我将在 24 小时内创建所有文档,但我想根据创建它的 id 获取它们

//这是我的代码

exports.getPreviousDayOrder = async (req,res,next) =>{
   vendorId=req.params.id
   let d= new Date()
   let pdate =d.getDate()-2
   let month = d.getMonth()+1
   let year = d.getFullYear()
  previousDay= `${year}-${month}-${pdate}T00:00:00.000Z`
  currentDay= Date.now

   const vendorOrder = await Order.find({vendorId,createdDate:{$gt:previousDay},$lt:currentDay})
      try {
          if (!vendorOrder) {
            const error = new Error('Could not find Order.')
            error.statusCode = 404;
            throw error;
          }
          res.status(200).json({message:'VendorOrder fetched.',vendorOrder})
        }  catch(error) {res.send(error)}
             next(error)
        }

这是我从邮递员那里得到的回复——一个空文档

{
    "message": "VendorOrder fetched.",
    "vendorOrder": []
}

我尝试过的其他查询

const vendorOrder = await Order.find({createdDate:{$gt:previousDay},$lt:currentDay})

它提供所有文档,每个供应商 ID 都是在 D-1 日创建的

如果我从我的路由中删除 :/id,那么我将获取所有带有登录 ID 的文档,因为存在令牌身份验证。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    这假定 vendorId 是 MongoDB 中文档的 id。您需要使用ObjectId(...) 投射id。 try/catch 也需要包含 find ,否则不会捕获数据库错误。

    try{
      const vendorOrder = await Order.find({
          vendorId:mongoose.Types.ObjectId(req.params.id),
          createdDate:{$gt:previousDay},
          createdDate:{$lt:currentDay}
      })
      if (!vendorOrder) {
        const error = new Error('Could not find Order.')
        error.statusCode = 404;
        throw error;
      }
      res.status(200).json({message:'VendorOrder fetched.',vendorOrder})
    }  
    catch(error) {res.send(error);next(error)}
    

    更多示例:https://stackoverflow.com/a/38455992/238847

    MondoDB 对象 ID:https://mongodb.github.io/node-mongodb-native/2.0/tutorials/objectid/

    【讨论】:

    • 谢谢斯坦,我试过你的答案,但它返回空文档,我认为我从 nodejs 查询日期与保存在 Mongo 中的日期的方式有些不匹配,如果你能提出任何建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多