Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
couchbase lite android中文档的排序和查询_Android_Couchbase_Couchbase Lite_Couchbase View - Fatal编程技术网

couchbase lite android中文档的排序和查询

couchbase lite android中文档的排序和查询,android,couchbase,couchbase-lite,couchbase-view,Android,Couchbase,Couchbase Lite,Couchbase View,我要做的是查找所有与某个id匹配并按名称排序的记录。数据如下所示: { type:"receiving", saleName:"Harshitha", penId:"7aac88118420858d62f5ea55e22" } { type:"receiving", saleName:"Tom", penId:"81fb1a79526f4e2bdc77aa7d73d" } { type:"receiving", saleName:"

我要做的是查找所有与某个id匹配并按名称排序的记录。数据如下所示:

{
    type:"receiving",
    saleName:"Harshitha",
    penId:"7aac88118420858d62f5ea55e22"
}
{
    type:"receiving",
    saleName:"Tom",
    penId:"81fb1a79526f4e2bdc77aa7d73d"
}
{
    type:"receiving",
    saleName:"James",
    penId:"81fb1a79526f4e2bdc77aa7d73d"
}
我想得到一些按saleName排序的特定penID的文档。 示例:-我想获取带有此penId“81fb1a79526f4e2bdc77aa7d73d”的文档,并按saleName对其进行排序。像这样的命令:-

{
    type:"receiving",
    saleName:"James",
    penId:"81fb1a79526f4e2bdc77aa7d73d"
}
{
    type:"receiving",
    saleName:"Tom",
    penId:"81fb1a79526f4e2bdc77aa7d73d"
}
我的看法是这样的,

View view = database.getView("receiving_view");
  if (view.getMap() == null) {
      view.setMap(new Mapper() {
          @Override
          public void map(Map<String, Object> document, Emitter emitter) {
              if (document.get("type").equals("receiving") ) {

                  List<Object> keys = new ArrayList<Object>();
                  keys.add(document.get("penId"));
                  keys.add(document.get("saleName"));

                  emitter.emit(keys, document);
              }
          }
      }, "1.1");
  }
  return view;
View view = getView("receiving_view");
Query query = view.createQuery();

List<Object> keys = new ArrayList<Object>();
keys.add("81fb1a79526f4e2bdc77aa7d73d");

List<Object> allKeys = new ArrayList<Object>();
allKeys.add(keys);
query.setKeys(allKeys);
query.run();
View-View=database.getView(“接收视图”);
if(view.getMap()==null){
view.setMap(新映射器(){
@凌驾
公共空心地图(地图文档、发射器){
if(document.get(“type”).equals(“receiving”)){
列表键=新的ArrayList();
key.add(document.get(“penId”));
key.add(document.get(“saleName”));
emitter.emit(键、文档);
}
}
}, "1.1");
}
返回视图;
然后我试图得到这样的数据

View view = database.getView("receiving_view");
  if (view.getMap() == null) {
      view.setMap(new Mapper() {
          @Override
          public void map(Map<String, Object> document, Emitter emitter) {
              if (document.get("type").equals("receiving") ) {

                  List<Object> keys = new ArrayList<Object>();
                  keys.add(document.get("penId"));
                  keys.add(document.get("saleName"));

                  emitter.emit(keys, document);
              }
          }
      }, "1.1");
  }
  return view;
View view = getView("receiving_view");
Query query = view.createQuery();

List<Object> keys = new ArrayList<Object>();
keys.add("81fb1a79526f4e2bdc77aa7d73d");

List<Object> allKeys = new ArrayList<Object>();
allKeys.add(keys);
query.setKeys(allKeys);
query.run();
View-View=getView(“接收视图”);
Query=view.createQuery();
列表键=新的ArrayList();
添加(“81fb1a79526f4e2bdc77aa7d73d”);
List allKeys=new ArrayList();
所有键。添加(键);
查询。设置键(所有键);
query.run();

它不起作用,因为我传递了一个键,但它们在视图中是两个键…但是我不能传递'saleName'作为键,因为我只想按'saleName'排序。最好的方法是什么?

我终于找到了解决方案。我不想在这里使用设置键,我应该使用一系列键,而不是一组特定的键

我将startKey设置为
[penID]
,将endKey设置为
[penID,{}]
。空映射在任何其他值之后排序,因此此键范围包括以
penID
开头的所有键。我更改了数据获取方法。这就是它看起来的样子

View view = getView("receiving_view");
Query query = view.createQuery();

query.setStartKey(Arrays.asList("81fb1a79526f4e2bdc77aa7d73d"));
query.setEndKey(Arrays.asList("81fb1a79526f4e2bdc77aa7d73d", new HashMap<String, Object>()));
query.run();
View-View=getView(“接收视图”);
Query=view.createQuery();
query.setStartKey(Arrays.asList(“81fb1a79526f4e2bdc77aa7d73d”);
setEndKey(Arrays.asList(“81fb1a79526f4e2bdc77aa7d73d”,newhashmap());
query.run();

什么版本的Couchbase Lite?Couchbase Lite 1.4.1