如何通过联接在CosmosDB中使select *查询工作?

时间:2019-06-26 09:12:21

标签: azure-cosmosdb azure-cosmosdb-sqlapi

我有一些看起来与此相似的文件

{
    "id": "XX",
    "_id": "XX",
    "artno": "0107727021",
    "vendor": "XX",
    "updatedAt": "2019-06-24T20:25:49.602Z",
    "locales": [
        {
            "title": "Bademantel aus Leinen",
            "description": "PREMIUM QUALITÄT. Bademantel aus gewaschenem Leinen mit zwei Vordertaschen und einem Bindegürtel in der Taille. Unisex. Durch Trocknen im Wäschetrockner bleibt die Weichheit des Leinens erhalten.",
            "categories": [
                "Damen",
                "Nachtwäsche",
                "Nachthemden & Morgenmäntel",
                "Bademantel"
            ],
            "brand": "XX",
            "country": "DE",
            "currency": "EUR",
            "language": "de",
            "variants": [
                {
                    "artno": "0107727021002",
                    "price": 39.99,
                    "stock": 1,
                    "attributes": {
                        "size": "S/M",
                        "color": "Grau"
                    }
                },
                {
                    "artno": "0107727021004",
                    "price": 39.99,
                    "stock": 0,
                    "attributes": {
                        "size": "L/XL",
                        "color": "Grau"
                    }
                }
            ]
        },
        {
            "title": "Morgonrock i tvättat linne",
            "description": "PREMIUM QUALITY. En morgonrock i tvättat linne. Morgonrocken har två framfickor och knytskärp i midjan. Unisex. Torktumla gärna för att behålla mjukheten i linnet.",
            "categories": [
                "Dam",
                "Sovplagg",
                "Nattlinnen & Morgonrockar",
                "Morgonrock"
            ],
            "brand": "XX",
            "country": "SE",
            "currency": "SEK",
            "language": "sv",
            "variants": [
                {
                    "artno": "0107727021002",
                    "price": 399,
                    "stock": 1,
                    "attributes": {
                        "size": "S/M",
                        "color": "Grå"
                    }
                },
                {
                    "artno": "0107727021004",
                    "price": 399,
                    "stock": 0,
                    "attributes": {
                        "size": "L/XL",
                        "color": "Grå"
                    }
                }
            ]
        }
    ]
}

我想查询并获取所有文档,但仅使用数组中我要过滤的国家/地区中的数据。

例如country ='DE',那么我希望文档仅包含数组的那部分而不是所有国家的信息

我尝试了以下查询,但它告诉我我不能使用select *

SELECT * FROM c join l in c.locales where l.country = 'DE'

那我该怎么做才能使它起作用?

1 个答案:

答案 0 :(得分:0)

该错误表明'SELECT *' is only valid with a single input set.

您的SQL使用JOIN,因此请定义要查询的特定列:

SELECT c.XX,c.YY,l.ZZ FROM c
 join l in c.locales 
 where l.country = 'DE'

或直接使用c

SELECT c FROM c
 join l in c.locales 
 where l.country = 'DE'

请按照以下步骤调整您的SQL:

SELECT l FROM c
 join l in c.locales 
 where l.country = 'DE'

输出:

[
    {
        "l": {
            "title": "Bademantel aus Leinen",
            "description": "PREMIUM QUALITÄT. Bademantel aus gewaschenem Leinen mit zwei Vordertaschen und einem Bindegürtel in der Taille. Unisex. Durch Trocknen im Wäschetrockner bleibt die Weichheit des Leinens erhalten.",
            "categories": [
                "Damen",
                "Nachtwäsche",
                "Nachthemden & Morgenmäntel",
                "Bademantel"
            ],
            "brand": "XX",
            "country": "DE",
            "currency": "EUR",
            "language": "de",
            "variants": [
                {
                    "artno": "0107727021002",
                    "price": 39.99,
                    "stock": 1,
                    "attributes": {
                        "size": "S/M",
                        "color": "Grau"
                    }
                },
                {
                    "artno": "0107727021004",
                    "price": 39.99,
                    "stock": 0,
                    "attributes": {
                        "size": "L/XL",
                        "color": "Grau"
                    }
                }
            ]
        }
    }
]