mongodb - Mongodb根据日期查询
问题描述
嗨,我正在尝试查找仅在 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})
它提供了在 D-1 日创建的每个供应商 ID 的所有文件
如果我:/id
从我的路线中删除,那么我将获取所有具有登录 ID 的文档,因为存在令牌身份验证。
解决方案
这假设这vendorId
是id
MongoDB 中的文档。您将需要转换id
using ObjectId(...)
。此外,try/catch 需要包含查找,否则将不会捕获数据库错误。
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 ObjectID:https ://mongodb.github.io/node-mongodb-native/2.0/tutorials/objectid/
推荐阅读
- ssh - Gitlab CI/CD:使用 ssh 密钥部署到 ubuntu 服务器(使用 windows shell 运行器)
- c++ - 许多 Boost::histogram 对象的动态分配
- python - 为什么一个 Python 脚本会引发 qt.qpa.plugin 错误,而另一个相同的脚本不会?
- angular - 在 HTTP 单元测试中总是调用 catchError
- javascript - 显示来自现有 img 标签的图像,而无需再次调用服务器。chrome 扩展 javascript
- mysql - 气流:芹菜工人太多的MySQL连接
- r - 将多个输出从闪亮添加到 html 降价
- javascript - 如果对 API 的后端 GET 请求因用户不存在而失败,如何显示 404 页面?前后端分离
- python-2.7 - 关闭python串口时出错
- php - Codes work well on live server but not working on localhost. Giving errors