ios - 查询包含两个键的 couchbase ios View 时使用通配符

标签 ios couchbase couchbase-lite

如何查询包含两个键的 couchbase View ?第一个是 NSNumber 类型(在下面的例子中称为 created)和一个 NSString 类型(称为用户名)。

CBLView* view = [database viewNamed:@"by_username"];
if (!view.mapBlock)
{
    [view setMapBlock: MAPBLOCK({
        if ( [doc[@"type"] isEqualToString:@"user"] )
        {
            emit(@[doc[@"created"],doc[@"username"]], nil);
        };
    }) version: @"2"];
}

CBLQuery* q = [view createQuery];
q.keys = @[ @[ @{}, @"john" ] ];
// run query

在上面的查询中,我希望所有带有 doc[@"username"] == @"john"的文档都匹配,无论 doc[@"created"] 的值如何(即我是假设 @{} 相当于通配符)。

但是,尽管存在许多用户名为@"john"的文档,查询仍返回 0 个匹配项。我一定是做错了什么,所以非常感谢任何见解!

最佳答案

看来您正在尝试向后搜索,您的索引应按您要搜索的第一项进行组织。因此,如果您不关心 created,您应该将其从索引中删除,因为它会导致您在此处遇到的问题。了解您可能需要将此用于其他查询,创建一个包含此更改的新 View 。

此外,作为对您的回答的一般说明,在索引中发出整个文档绝对没有好处。它导致存储大小加倍以及 View 框架的低效操作。

关于ios - 查询包含两个键的 couchbase ios View 时使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28032758/

相关文章:

ios - 直接从 bundle 访问 couchbase lite 数据库?

ios - 为 CALayer 的 shadowPath 设置动画时的平滑动画

ios - SCXML解析IOS

ios - 将数据插入属于自定义对象的 NSMutableArray

沙发底座 : 160x faster with only one node : why?

C# 如何将一个对象序列化/反序列化到/从 Dictionary<string,Object> 以将其保存/加载到 Couchbase.lite

ios - 有没有办法从 Instruments (Xcode) 的命令行实例中删除授权提示?

java - 如果 Couchbase 连接失败,如何在运行时禁用缓存?

python - 将 couchbase 与 git、日志模块一起使用时,“NoneType”对象不可调用错误

ios - 如何使用查询从 CouchBaseLite Mobile 中查找数据?