Android Cloudant同步查询

时间:2017-03-08 05:49:09

标签: android cloudant

正如文档所说(https://github.com/cloudant/sync-android/blob/master/doc/query.md)我试图在列表中进行查询

外观:

query.put("codigo", 4);
            result = q.find(query);
            for (DocumentRevision revision : result) {
                Log.d("QueryTest", "Test1 :" + revision.getBody().toString());
            }

返回:

  

{“codigo”:4,“公司”:[
        {
           “ID”: “b9f19d88-13c0-40e3-89de-63dc787afb4c”            “名字”:“孝顺0 1488949817178”         },         {
           “ID”: “f17fb098-316e-4d33-a0f7-f5719bf9d62e”            “名字”:“孝顺1 1488949817178”         },“员工”:[
        {
           “codigo”:2891,            “ID”: “cc54fa37-0b64-4108-869a-1303c6176ce5”            “名称”:“员工0 79ed4”         },         {
           “codigo”:4642,            “ID”: “19b76bbc-82c7-4295-a385-82ac2d892458”            “名称”:“员工1 e1102”         }],“id”:“ef2d0ebf-50b9-4cd0-9aaf-5389bccaaa56”,“nome”:“Random 4”}

所以确定

但是这个查询不起作用:

query.put("employees.codigo",  2891);

首先返回:

  

QuerySqlTranslator:没有一个索引包含所有   [{employees.codigo = {$ =当量2891}}];为这些字段添加索引以进行查询   有效地

创建索引后

Index i = q.createJsonIndex(Arrays.<FieldSort>asList(new FieldSort("employees.codigo")), null);

返回

  

QueryExecutor:Projection fields数组为空,禁用项目   这个查询

所以我创建了字段的arraylist来过滤

List<String> fields = Arrays.asList("codigo");
result = q.find(query, 0 , 0 , fields, null);
  

没有返回

添加更多一个字段进行过滤:

    query.put("codigo",4)
query.put("employees.codigo",  2891);
  

返回:抱怨索引

创建了另一个索引:

    i = q.createJsonIndex(Arrays.<FieldSort>asList(new FieldSort("employees.codigo"), new FieldSort("codigo")), null);
  

返回:没什么

什么是错的?

我如何通过孩子获取文件,我怎样才能获得孩子?

感谢

1 个答案:

答案 0 :(得分:1)

认为这是不受支持的,请参阅the doc on unsupported features,特别是突出显示的条目:

  

阵列

     
      
  • 虚线表示法,用于索引或查询数组中的子文档。
  •   
  • 查询精确数组匹配,{field:[1,3,7]}。
  •   
  • 使用点分表示法{field.0:1}查询匹配特定数组元素。
  •   
  • 使用$ all查询。
  •   
  • 使用$ elemMatch查询。
  •