在cloudant DB(Android)中按特定ID(regex)搜索

在cloudant DB(Android)中按特定ID(regex)搜索,android,sqlite,cloudant,Android,Sqlite,Cloudant,我正在构建一个Android应用程序,在sqlite数据库中内部存储数据。我们在代码中使用Cloudant库 我在数据库中有不同类型的数据-所有数据都具有不同的ID。例如:可以有GUID以A、B、C、D开头的数据。这意味着我们可以有GUID,如A、B等等 现在,我想获取GUID以uu开头的所有DB条目,并将它们本地存储在应用程序本身中以供进一步处理。但是,我只看到一个从DB获取所有ID的函数。 所以,我现在做的是: List<String> allID = db.getIds();

我正在构建一个Android应用程序,在sqlite数据库中内部存储数据。我们在代码中使用Cloudant库

我在数据库中有不同类型的数据-所有数据都具有不同的ID。例如:可以有GUID以A、B、C、D开头的数据。这意味着我们可以有GUID,如A、B等等

现在,我想获取GUID以uu开头的所有DB条目,并将它们本地存储在应用程序本身中以供进一步处理。但是,我只看到一个从DB获取所有ID的函数。 所以,我现在做的是:

List<String> allID = db.getIds();

for (int i=0;i<allID.size();i++)
{
      String guid = allID.get(i);
      if (guid.startsWith("A_"))
      {
         //store and process this guid.
      }
}
List allID=db.getIds();
对于(int i=0;i您可以使用

例如,要使所有ID从
A_u
开始,可以使用如下选择器:

{"selector":{"$and":[{"_id": {"$gte": "A_"}},{"_id": {"$lt": "A_\uffff"}}]}}
在Cloudant的同步android中,这是:

Map idGt=Collections.singletonMap('u id',Collections.singletonMap('gt',A');
Map idlt=Collections.singletonMap(“\u id”,Collections.singletonMap(“$lte”,“A\uffff”);
Map query=Collections.singletonMap($and),Arrays.asList(idGt,idlt));
QueryResult result=q.find(查询);
对于(文档修订文档:结果){
//和医生做点什么
}
其中,
q
是从


根据您的描述,我不太确定,但是另外,如果您只想将带有特定前缀的文档子集复制到设备上,您可以使用上面显示的JSON选择器的字符串形式作为构建拉复制时方法的参数。

您还知道这是否有助于提高性能吗?I还有一个猜测,即使有一种方法可以获得以“a_u2;”开头的id,它将在内部一个接一个地搜索所有文档并检索我想要的文档-这与我的做法有些类似。当然,如果他们在内部进行一些优化来改进这一点,它将是有用的。它应该快得多,因此如果您使用带有
\u id
字段名的查询功能,它将不会进行表扫描。它将从
\u id
s的排序索引中检索行键,然后从表中仅提取所需的文档,而不是读取所有文档。从您的示例中,我的印象是您的GUID存储为文档
\u id
字段,但如果需要,您可以为JSON文档中的任何字段创建索引。
{"selector":{"$and":[{"_id": {"$gte": "A_"}},{"_id": {"$lt": "A_\uffff"}}]}}