couchdb - CouchDB 按日期过滤会跳过某些日期
问题描述
我正在尝试在某些日期之间从 CouchDB 获取数据,并且大多数情况下效果很好,但是总是会跳过某些日期(即使它们在范围内),并且我没有得到这些日期的任何数据。
但是,当我只选择我无法进入该范围的特定日期时,我会返回结果。我的卷曲在范围和特定日期选择中完全相同。
调用 CouchDB 函数 (by_date)
if(doc.type === 'employee')
emit(doc.year + "-" + doc.month + "-" + doc.day,
{name:doc.name,
email:doc.email,
department:doc.department,
comment:doc.comment,
nominator:doc.nominator,
values:doc.values,
type:doc.type,
team:doc.team
});
}
范围卷曲
http://some-domain/some-database/_design/nominees/_view/by_date?&&startkey="2019-6-1"&&endkey="2019-8-16"
特定日期的卷曲
http://some-domain/some-database/_design/nominees/_view/by_date?&&startkey="2019-8-2"&&endkey="2019-8-2"
Curl for rage 会返回除 2019-8-2 之外的所有数据,即使它在范围内。
特定日期的卷曲返回 2019-8-2 的数据。
我希望能够在选定的范围内获得这个日期,但我不确定这里有什么问题。
解决方案
看起来您正在将日期作为字符串进行比较并且没有得到正确的结果。
这意味着“2019-08-2”<“2019-8-2”,这不是你想要的。
您需要正确地对月份和日期进行零填充,或者将日期转换为数字,例如纪元秒,或者发出矢量键:
emit([doc.year, doc.month, doc.day], ...);
(前提是 .year .month .day 在原始文档中是整数而不是字符串)。
推荐阅读
- javascript - 如何从 jquery、js 或 html 中多次选择一个选项
- reactjs - 使用 Card Material UI 中的功能组件重定向到新页面
- python - 如何使用 Tkinter 从不同的函数重新分配标签文本
- powerbi - 如何反向过滤视觉对象?
- hive - 无法在 hive 表中使用 CTE 编写查询
- android-studio - 约束布局中的所有小部件都卡在 Android Studio 的左上角
- php - 如何在 Laravel Mailable 中启用 HTML
- reactjs - 使用 Cypress 未能通过 XHR 请求的测试
- linux - 在 Docker 容器中使用 root 用户挂载 CIFS 时出错
- c# - Asp.net Core C# 中的 Json-RPC