2017-09-12 13 views
0

私はデータベースとしてAzureのDocumentDBを使用しています。何千もの文書が潜在的にあり、特定のタグを含むすべての文書を返したいと思っています。例えばDocumentDB SQLは複数の値を配列でチェックします

文献1

{ 
    "id": "328732, 
    "name": "jeff", 
    "tags": [ 
    "A", 
    "B", 
    "C" 
    ] 
} 

文献2

{ 
    "id": "54092, 
    "name": "ayla", 
    "tags": [ 
    "B", 
    "D", 
    "F" 
    ] 
} 

文献3

{ 
    "id": "98234, 
    "name": "lara", 
    "tags": [ 
    "B", 
    "G", 
    "H" 
    ] 
} 

タグのリストがある場合["A", "F", "X"]、最初の2つのドキュメント(jeff、およびayla)を返す必要があります。 私はいくつかのORオペレーターと機能ARRAY_CONTAINSに建て使用してこれを達成することができます。これを達成するためのより良い方法があれば、私は思ったんだけど

SELECT * 
FROM c 
WHERE ARRAY_CONTAINS(c.groups, "A") OR 
WHERE ARRAY_CONTAINS(c.groups, "F") OR 
WHERE ARRAY_CONTAINS(c.groups, "X") 

。何百ものタグがあれば、何百もの条件が必要になります。

答えて

1

あなたが望むものを達成する他の方法はわかりません。 ORで一連のARRAY_CONTAINSに自動的に展開するコードを書くことができます。

関連する問題