0

我一直在使用 MongoDB 并且喜欢它,但最近开始使用 Couchbase。我在以我想要的方式检索文档时遇到了一些问题。

假设我有一个这样的文件:

{
   "data": [
      {
         "target": "value1"
      },
      {
         "target": "value2"
      },
      {
         "target": "value3"
      }
   ]
}

在 MongoDB 中,可以按照以下方式做一些事情find({"data.target": value2})(而不是必须指定data.1.target)。但是我似乎找不到在 Couchbase 中执行此操作的方法。

有没有一种方法,无论是使用 N1QL 还是视图,都可以根据指定的子键查找所有文档而不指定所有中间键?如果我指定它是 ,我可以毫无问题地获取文档data.1.target,但如果我还不知道所需子数组的键,那对我没有任何好处。

换句话说,对于 N1QL,我希望能够在子句data[*].target之后执行 using but的等价操作。WHERE

对不起,如果我不清楚。我环顾四周,但我不完全知道如何表达我的问题或我应该搜索哪些特定关键字。我不知道要搜索什么,所以我终于在这里问了。

在此先感谢您的时间。

4

1 回答 1

3

您可以使用 any with within 子句根据指定的子键查找文档。在您的情况下,n1ql 查询将是: select * from default where any t within data 满足 t.target="value2" end;

上面的查询为您提供了 data[*].target 等于 "value2" 的所有文档,其中非常强大,因为它也会搜索对象内的嵌套数组。

在您的情况下,您也可以使用 any with in 子句,类似于我们在教程链接中的内容:http: //query.pub.couchbase.com/tutorial/#12 您的具体查询将是: select * from default where any数据中的 t 满足 t.target="value2" end; 但是这个查询只会在数组内的 1 级中搜索。

于 2016-02-11T01:44:46.597 回答