如何查询包含两个键的 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/