0

私は MongoDB を使用して気に入っていますが、最近 Couchbase を使い始めました。希望する方法でドキュメントを取得するのに問題があります。

次のようなドキュメントがあるとします。

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

find({"data.target": value2})MongoDB では、 (指定する必要があるのではなく)の行に沿って何かを行うことができますdata.1.target。ただし、Couchbase でこれを行う方法が見つからないようです。

N1QL またはビューを使用して、すべての中間キーを指定せずに、指定された子キーに基づいてすべてのドキュメントを検索する方法はありますか? であることを指定すれば問題なくドキュメントを取得できますdata.1.targetが、目的の子配列のキーをまだ知らない場合は何の役にも立ちません。

別の言い方をすれば、N1QL の場合、節data[*].targetの後に butを使用するのと同じことができるようにしたいと考えています。WHERE

よくわからない場合は申し訳ありません。私はかなり見回しましたが、質問を明確にする方法や、どの特定のキーワードを検索する必要があるのか​​ 正確にはわかりません. 私は何を検索するかについてのアイデアがなくなったので、最終的にここで質問しています。

お時間をいただきありがとうございます。

4

1 に答える 1

3

any with within 句を使用して、指定した子キーに基づいてドキュメントを検索できます。あなたの場合、n1ql クエリは次のようになります

上記のクエリは、data[*].target が「value2」に等しいすべてのドキュメントを提供します。オブジェクト内のネストされた配列も検索するため、Within は非常に強力です。

あなたの場合、チュートリアル リンクにあるものと同様に、any with in 句を使用することもできます: http://query.pub.couchbase.com/tutorial/#12 特定のクエリは次のようになります :データ内の t は t.target="value2" end を満たします。 ただし、このクエリは配列内の 1 つのレベルでのみ検索します。

于 2016-02-11T01:44:46.597 に答える