Cosmos 中可选字段的复合索引

Composite index for optional field in Cosmos

我在 Cosmos DB 中有一个集合,其中包含不同类型(和架构)的文档:

{
"partKey": "...",
"type": "type1",
"data": {
    "field1": 123,
    "field2": "sdfsdf"
  }
}
{
"partKey": "...",
"type": "type2",
"data": {
    "field3": ["123", "456", "789"]
  }
}

我正在尝试创建复合索引 [/type, /data/field3/[]/?],但遇到了一个问题:

The indexing path '\/data\/field3\/[]\/?' could not be accepted, failed near position '15'. Please ensure that the path is a valid path. Common errors include invalid characters or absence of quotes around labels

我们不支持 Cosmos DB 中复合索引的通配符。这里有一个composite index sample作为参考。

我们将更新我们的文档以使其更加清晰。我查看了这些,但我们目前没有对此进行记录。

谢谢。

在复合索引中,您只需指定要索引的路径,而不是值,因此对于您的示例:

"compositeIndexes":[  
        [  
            {  
                "path":"/type",
                "order":"ascending"
            },
            {  
                "path":"/data/field3",
                "order":"descending"
            }
        ]
    ]

只需指定查询所需的订单类型(我只是使用这些作为示例)。

对于在您的数据下具有不同属性的不同文档 属性,我相信您必须为您需要的每个用例添加每个复合索引,因为复合索引不支持通配符,所以您会需要添加:

/data/field1 /data/field2 etc etc

希望对您有所帮助。