微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

如何编写查询以查找在“ Aug 1,2020,3:58:56 PM”之后创建的文档。 我需要从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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。