如何在cloudant查询中对日期进行排序

时间:2016-11-16 05:42:06

标签: android jquery sorting couchdb cloudant

我想将我的数据排序为本地cloudant查询中的par desc date。 我在我的数据库文档中有insert_ts。 我的简单查询代码是: -

  public List<BasicDocumentMAP> allTasksWithAllArg(Map<String, Object> query, int skip, int limit, List<String> fields, List<Map<String, String>> sortDocument) {
    int nDocs = this.sunDatastore.getDocumentCount();
    QueryResult all = this.im.find(query, skip, limit, fields, sortDocument);
    List<BasicDocumentMAP> arrayListBasicDocumentMAP = new ArrayList<>();

    // Filter all documents down to those of type Task.
    for (DocumentRevision rev : all) {

    }}

请帮我按日期排序数据。谢谢

2 个答案:

答案 0 :(得分:0)

试试这段代码:

SQL查询:

Select  _id ,  _rev ,  insert_ts ,  title from table
where year=2010 order by insert_ts

Cloudant查询:

{
  "selector": {
    "year": {
      "$gt": 2010
    }
  }, 
  "fields": ["_id", "_rev", "insert_ts", "title"], // 
  "sort": [{"insert_ts": "asc"}]
}

答案 1 :(得分:0)

更新:原始答案(在底部)显示了如何按年排序(OP询问如何获得年份,因此我认为这是他们想要排序的方式)。这是按日期排序的方法:

insert_ts字段更改为日期,或添加一个新日期字段,例如:

Date insertTsDate = null;
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy-hh-mm-ss-SS");
try {
    insertTsDate = dateFormat.parse(insert_ts);
}
catch (Exception e) {
    // handle exception  
}

然后在您的文档中添加一个名为insert_ts_date的新字段(或任何您想要调用的字段),将其设置为上面的insertTsDate变量,并按如此排序:

List<Map<String, String>> sortDocument = new ArrayList<Map<String, String>>();
Map<String, String> sortByInsertTsDate = new HashMap<String, String>();
sortByInsertTsDate.put("insert_ts_date", "asc");
sortDocument.add(sortByInsertTsDate);

原始答案:

我认为您必须在文档中明确添加年份属性。如果您有年份,那么只需将其添加到您的文档中即可。如果您需要从字符串中解析它,您可以使用正则表达式或日期/日历类来解析日期:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy-hh-mm-ss-SS");
try {
    Date date = dateFormat.parse(insert_ts);
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    int year = c.get(Calendar.YEAR);
}
catch (Exception e) {
    // handle exception  
}

然后按如下方式发出您的查询:

List<Map<String, String>> sortDocument = new ArrayList<Map<String, String>>();
Map<String, String> sortByYear = new HashMap<String, String>();
sortByYear.put("year", "asc");
sortDocument.add(sortByYear);