Как заставить запрос select * работать в CosmosDB с объединением? - PullRequest
1 голос
/ 26 июня 2019

У меня есть документы, похожие на эти

{
    "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å"
                    }
                }
            ]
        }
    ]
}

Я хочу запросить и получить все документы, но только с данными из той части массива, где указанная страна является той, по которой я фильтрую.

Например, страна = 'DE', тогда я хочу, чтобы документ содержал только эту часть массива, а не информацию обо всех странах

Я пробовал следующий запрос, но он говорит мне, что я не могу использовать select *

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

Так, что я могу сделать, чтобы сделать эту работу?

1 Ответ

0 голосов
/ 26 июня 2019

Ошибка указывает, что '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"
                    }
                }
            ]
        }
    }
]
...