2017-09-11 13 views
0

これまでに誰かがこれを必要としていたかどうかを調べましたが、それほど多くは見つかりませんでした。Azure Cosmos DocumentDB - サブ配列の1つのプロパティから配列を返します

私はAzureのDocumentDBコレクションに次のようなJSONオブジェクトを持っている:

{ 
    personID: 1, 
    name: "Bruce", 
    surname: "Dickinson", 
    items: [ 
     { 
      itemID: 1, 
      itemType: "A", 
      name: 'Item 1' 
     }, 
     { 
      itemID: 2, 
      itemType: "A", 
      name: 'Item 2' 
     }, 
     { 
      itemID: 3, 
      itemType: "B", 
      name: 'Item 3' 
     } 
    ] 

} 

コレクションはそれで多くの人を持っています。 personID 2、3、4 ...... 100 .... 1000など。

personID = 1のitemIDsの配列とitemType = 'A'のアイテムを抽出するSQLクエリを作成したいと思います。

itemIDs: [ 
    1, 
    2 
] 

または単に:

[ 
    1, 
    2 
] 

は、誰もがこれまでにこれをやってしようとした私は、結果は次のようになりたいですか?それも可能ですか?

答えて

1

私よりもSQL fooが多い人は、SQLだけでそれを行う方法を知っているかもしれませんが、ユーザー定義関数(UDF)を使用して行います。ここで

はSQLです:

function getItemIDArray (o) { 
    output = []; 
    for (item in o.items) { 
    output.push(item.itemID) 
    } 
    return output 
} 
+0

うーんの興味深い:

SELECT VALUE udf.getItemIDArray(c) FROM collection c WHERE <your clause> 

はここでUDFがどのようなものであるかです。ありがとうございました。 output.push(item.itemID)は、item.itemIDの代わりにnullをプッシュしているようです。なぜあなたはそれを考えますか? – ZeroOne

+0

Hmm "for(var item in o.items)"の前に "var"を入れてみてください。 –

+0

まだ動作しませんでした。私はしばらくの間、アプリケーションでそれをやっていますが、ネットワーク上で輸送するためにdbレベルでそれをやりたいと思います。 – ZeroOne

関連する問題