2016-09-16 6 views
0

は、私がDocumentDBコレクションにこれらの3つの文書を持って言う:DocumentDB:オプションの要素にマッチを選択するSQL

[ 
    { 
     "name": "tiger", 
     "keywords": [ 
      "animal", 
      "cat", 
      "stripes" 
     ] 
    }, 
    { 
     "name": "cat" 
    }, 
    { 
     "keywords": [ 
      "panther", 
      "black" 
     ] 
    } 
] 

どのように私は、「名前」は「猫に一致するすべての文書を返すために、単一のSQLクエリを構築でしょう"キーワード"と "名前"がドキュメント内のオプションの要素である場合は、 "キーワード"は "cat"と一致しますか?

答えて

1

は、この文字列で検索してください:

SELECT * r.name = '猫OR ARRAY_CONTAINS(r.keywords、 '猫')

+0

は素晴らしい作品ルートR FROM。 ARRAY_CONTAINSがCONTAINSと同じ方法で部分文字列と一致するようにクエリを変更する方法を知っていますか?現時点では、ARRAY_CONTAINSは文字列と正確に一致する必要があります。たとえば、文字列 "ca"は次のようになります。SELECT * FROM root r WHERE CONTAINS(r.name、 'ca')またはARRAY_CONTAINS(r.keywords、 'ca') – Projectitis

+0

ARRAY_CONTAINSは、配列。検索項目はどのようなタイプでもかまいません。ここ 別のアプローチは、 で保管してください(K 'CA')を(r.name、 'CA')を含むか、またはCONTAINS r.keywords 中のKを登録しよルートRから SELECT値R を行うことですJOINはキーワード配列を平坦化し、結果セットは入力文書と配列の各項目との外積であることを覚えておいてください。 たとえば、このクエリは、r.nameが両方の配列項目の条件を満たすため、2番目のドキュメントを2回返します。 –

関連する問題