如何编写查询以查找在" Aug 1 ,2020,3:58:56 PM"之后创建的文档



如何编写查询以查找在"2020年8月1日下午3:58:56";。我需要从Cloudant中查找大于特定日期的文档。在Cloudant,日期被存储为";2020年5月18日下午3:58:56;。

当我尝试如下查询时:

{
"selector": {
"$and": [
{
"project.projectId": {
"$eq": 34567
}
},
{
"createdDate": {
"$gte": "Aug  1 ,2020,3:58:56 PM"
}
}
]
}
}

我也得到了2019年的数据。正确的搜索不起作用。

筛选日期的正确方法是什么?

文档中的日期是不可比较的字符串。您要求Cloudant Query进行字典式字符串比较。为了实现这一点,你的日期字符串需要采用类似的格式,比如";YYYY-MM-DD HH:MM:SS";。但是,更好的解决方案是使用数字日期时间。

如果您不想修改文档以使用不同的格式,请创建一个map reduce视图,该视图首先解析日期字符串,然后发出一个向量值键:

d = Date.parse(doc.createdDate);
emit([doc.projectId, d.getFullYear(), d.getMonth()+1, d.getDate()], [...]);

并且您可以从这个视图中执行优雅的范围查询。

这里有一些有用的例子和其他与日期相关的技巧:https://blog.cloudant.com/2018/08/24/Time-sortable-document-ids.html

相关内容

最新更新