DocumentDB:使用数组查询'array_contains'?

时间:2016-11-02 10:09:18

标签: azure azure-cosmosdb

如何使用DocumentDB进行以下查询:

var categoryID = '1,2,3,4,5';

SELECT * FROM products doc WHERE ARRAY_CONTAINS(doc._sort.category, ' + categoryID + ');

这显然不起作用。

1 个答案:

答案 0 :(得分:1)

你需要像

这样的东西
SELECT * FROM product WHERE ARRAY_CONTAINS([1,2,3,4,5], product.category)

也可参数化:

SELECT * FROM product WHERE ARRAY_CONTAINS(@categoryIDs, product.category)

其中@categoryIDs = [1,2,3,4,5]。

在.NET中,这是一个片段:

Uri collectionUri = UriFactory.CreateDocumentCollectionUri("testdb", "testcollsingle");
int[] array = new int[] { 1, 2, 3 };

SqlQuerySpec query = new SqlQuerySpec(
    "SELECT VALUE ARRAY_CONTAINS(@categoryIds, 1)", 
    new SqlParameterCollection(new SqlParameter[] { 
        new SqlParameter { Name = "@categoryIds", Value = array 
}}));

bool result = client.CreateDocumentQuery<bool>(collectionUri, query)
    .AsEnumerable()
    .FirstOrDefault();

详细信息:https://msdn.microsoft.com/library/azure/dn782250.aspx#bk_array_contains