web-dev-qa-db-ja.com

DocumentDB Array_Length> 1のドキュメントをクエリします

次のようなドキュメントのセットがあります。

[
  {
    "Name": "Document1",
    "Properties": {
      "Property1": [
        "Value1",
        "Value2",
        "Value3",
      ]
    },
    "Tags": null
  },
  {
    "Name": "Document2",
    "Properties": {
      "Property1": [
        "Value1",
      ]
    },
    "Tags": null
  },
  {
    "Name": "Document3",
    "Properties": {
      "Property1": [
        "Value1",
        "Value2",
      ]
    "Property2": [
        "Value1",
      ]
    },
    "Tags": null
  }
]

プロパティノード内のProperty1配列に複数のアイテムがあるドキュメントをクエリする必要があります。上記の私の例では、Document1Document3のみが返されることを期待しています。 Array_Contains構文の実験に多くの時間を費やしましたが、不足し続けています。これが私の最新の試みがどのように見えるかです:

SELECT * FROM Docs d WHERE ARRAY_LENGTH([d.Properties, 'Property1']) > 1

しかし、私の構文では、すべてのドキュメントが返されます。

14
INNVTV

次のようなクエリが必要です。

SELECT * FROM Docs d WHERE ARRAY_LENGTH(d.Properties.Property1) > 1

DocumentDBの文法は階層的なネストされたデータに対して機能し、プログラミング言語のようにd.Properties.Property1、d.Properties.Property1 [0]などのプロパティにアクセスできることに注意してください。

24