【问题标题】:How to create a view in Couchbase with multiple WHERE and OR clauses如何在 Couchbase 中创建具有多个 WHERE 和 OR 子句的视图
【发布时间】:2015-02-04 12:36:17
【问题描述】:

我是 CouchBase 的新手,我正在寻找一种解决方案来扩展我的社交网络。 Couchbase 看起来更有趣,特别是它易于扩展功能。

但我正在为特定类型的文档创建视图而苦苦挣扎。

我的文档如下所示:

{
"id": 9476182,
"authorid": 86498,
"content": "some text here",
"uid": 41,
"accepted": "N",
"time": "2014-12-09 09:58:03",
"type": "testimonial"
}
{
"id": 9476183,
"authorid": 85490,
"content": "some text here",
"uid": 41,
"accepted": "Y",
"time": "2014-12-09 10:44:01",
"type": "testimonial"
}

我正在寻找与此 SQL 查询等效的视图。

SELECT * FROM bucket WHERE (uid='$uid' AND accepted='Y') OR (uid='$uid' AND authorid='$logginid')

如果正在查看推荐页面的用户是该推荐页面的所有者,则通过这种方式我可以获取所有用户的推荐,即使是未批准的推荐页面,或者如果不是,则显示所有给定的用户推荐,其中接受为 =="Y ",以及尚未批准但由正在查看该页面的用户撰写的推荐。

如果您能给我一些建议,我将不胜感激。

【问题讨论】:

    标签: couchbase couchbase-view


    【解决方案1】:

    与 SQL 不同,您不能直接将输入参数传递给视图;但是,您可以通过过滤范围在某种程度上模拟这一点。

    虽然不完全匹配 SQL,但我建议您简单地根据用户 ID 过滤推荐,然后在客户端进行过滤。我假设在大多数情况下甚至不会有任何待定的推荐,因此您不会真的得到很多不必要的数据。

    请注意,可以完全使用视图进行过滤,但是需要:

    • 更大的键或
    • 多个视图或
    • 多个查询

    通常建议将发出的密钥变小,因为这样可以提高性能;所以最好坚持上述解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多