正如文档所说(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);
返回:没什么
什么是错的?
我如何通过孩子获取文件,我怎样才能获得孩子?
感谢
答案 0 :(得分:1)
我认为这是不受支持的,请参阅the doc on unsupported features,特别是突出显示的条目:
阵列
- 虚线表示法,用于索引或查询数组中的子文档。
- 查询精确数组匹配,{field:[1,3,7]}。
- 使用点分表示法{field.0:1}查询匹配特定数组元素。
- 使用$ all查询。
- 使用$ elemMatch查询。