Eventos
Crie aplicativos e agentes de IA
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
APLICA-SE A: NoSQL
No Azure Cosmos DB for NoSQL, os itens são armazenados como JSON. As expressões e sistema de tipos são restritos para lidar somente com tipos JSON. Para obter mais informações, consulte as especificações do JSON.
Resumimos alguns aspectos importantes do trabalho com JSON:
{
chave esquerda e terminam com uma }
chave direitaVocê pode acessar o JSON aninhado usando um acessador de ponto (.
). Você pode usar Propriedades JSON aninhadas em suas consultas da mesma maneira que pode usar qualquer outra propriedade.
Aqui está um documento com JSON aninhado:
{
"name": "Teapo rainbow surfboard",
"manufacturer": {
"name": "AdventureWorks"
},
"releaseDate": null,
"metadata": {
"sku": "72109",
"colors": [
"cruise",
"picton-blue"
],
"sizes": {
"small": {
"inches": 76,
"feet": 6.33333
},
"large": {
"inches": 92,
"feet": 7.66667
}
}
}
}
Nesse caso, as propriedades sku
, colors
e sizes
estão todas aninhadas dentro da propriedade metadata
. A propriedade name
também está aninhada na propriedade manufacturer
.
Este primeiro exemplo projeta três propriedades aninhadas.
SELECT
p.manufacturer.name,
p.metadata.sku,
p.metadata.sizes.small.inches AS size
FROM
products p
[
{
"name": "AdventureWorks",
"sku": "72109",
"size": 76
}
]
Além das propriedades aninhadas, o JSON também oferece suporte a matrizes. Ao trabalhar com matrizes, você pode acessar um elemento específico dentro da matriz referenciando sua posição.
Esse exemplo acessa um elemento de matriz em uma posição específica.
SELECT
p.name,
p.metadata.colors
FROM
products p
WHERE
p.metadata.colors[0] NOT LIKE "%orange%"
[
{
"name": "Teapo rainbow surfboard",
"colors": [
"cruise",
"picton-blue"
]
}
]
Na maioria dos casos, entretanto, você usa uma subconsulta ou uma autojunção ao trabalhar com matrizes.
Por exemplo, aqui está uma consulta que retorna várias permutações usando os valores potenciais da matriz e uma junção cruzada,
SELECT
p.name,
c AS color
FROM
products p
JOIN
c IN p.metadata.colors
[
{
"name": "Teapo rainbow surfboard",
"color": "cruise"
},
{
"name": "Teapo rainbow surfboard",
"color": "picton-blue"
}
]
Como outro exemplo, a consulta também poderia usar EXISTS
com uma subconsulta.
SELECT VALUE
p.name
FROM
products p
WHERE
EXISTS (SELECT VALUE
c
FROM
c IN p.metadata.colors
WHERE
c LIKE "%picton%")
[
"Teapo rainbow surfboard"
]
Se uma propriedade não estiver definida em um item, seu valor será undefined
. Uma propriedade com o valor null
deve ser explicitamente definida e receber um valor null
.
O Azure Cosmos DB for NoSQL suporta duas funções úteis do sistema de verificação de tipos para propriedades as null
e undefined
:
IS_NULL
- verifica se o valor de uma propriedade é null
.IS_DEFINED
- verifica se um valor de propriedade está definido ou undefined
.Aqui está um exemplo de consulta que verifica se há dois campos em cada item do contêiner.
SELECT
IS_NULL(p.releaseDate) AS isReleaseDateNull,
IS_DEFINED(p.releaseDate) AS isReleaseDateDefined,
IS_NULL(p.retirementDate) AS isRetirementDateNull,
IS_DEFINED(p.retirementDate) AS isRetirementDateDefined
FROM
products p
[
{
"isReleaseDateNull": true,
"isReleaseDateDefined": true,
"isRetirementDateNull": false,
"isRetirementDateDefined": false
}
]
Para obter mais informações sobre operadores comuns e seu comportamento para os valores null
e undefined
, consulte operadores de igualdade e comparação.
Você pode acessar propriedades usando o operador de propriedade entre aspas []
. Por exemplo: SELECT c.grade
and SELECT c["grade"]
são equivalentes. Essa sintaxe é útil para substituir uma propriedade que contém espaços, caracteres especiais ou compartilha o mesmo nome que uma palavra-chave ou palavra reservada SQL.
Por exemplo, aqui está uma consulta que faz referência a uma propriedade de algumas maneiras diferentes.
SELECT
p.manufacturer.name AS dotNotationReference,
p["manufacturer"]["name"] AS bracketReference,
p.manufacturer["name"] AS mixedReference
FROM
products p
[
{
"dotNotationReference": "AdventureWorks",
"bracketReference": "AdventureWorks",
"mixedReference": "AdventureWorks"
}
]
A projeção de consulta suporta expressões e sintaxe JSON.
SELECT {
"productName": p.name,
"largeSizeInFeet": p.metadata.sizes.large.feet
}
FROM
products p
[
{
"$1": {
"productName": "Teapo rainbow surfboard",
"largeSizeInFeet": 7.66667
}
}
]
Neste exemplo, a cláusula SELECT
cria um objeto JSON. Como o exemplo não fornece nenhuma chave, a cláusula usa o nome da variável de argumento implícito $<index-number>
.
Este exemplo nomeia explicitamente o mesmo campo.
SELECT {
"productName": p.name,
"largeSizeInFeet": p.metadata.sizes.large.feet
} AS product
FROM
products p
[
{
"product": {
"productName": "Teapo rainbow surfboard",
"largeSizeInFeet": 7.66667
}
}
]
Como alternativa, a consulta pode achatar o objeto para evitar nomear um campo redundante.
SELECT VALUE {
"productName": p.name,
"largeSizeInFeet": p.metadata.sizes.large.feet
}
FROM
products p
[
{
"productName": "Teapo rainbow surfboard",
"largeSizeInFeet": 7.66667
}
]
Você pode usar explicitamente alias de valores em consultas. Caso uma consulta tenha duas propriedades com o mesmo nome, use a atribuição para renomear uma ou as duas propriedades para que elas não sejam ambíguas no resultado projetado.
A palavra-chave AS
usada para atribuição de alias é opcional, conforme mostrado no exemplo a seguir.
SELECT
p.name,
p.metadata.sku AS modelNumber
FROM
products p
[
{
"name": "Teapo rainbow surfboard",
"modelNumber": "72109"
}
]
Você não pode usar a atribuição de alias para projetar um valor como um nome de propriedade com um espaço, um caractere especial ou uma palavra reservada. Se você quisesse alterar a projeção de um valor para, por exemplo, ter um nome de propriedade com um espaço, poderia usar uma expressão JSON.
Veja um exemplo:
SELECT VALUE {
"Product's name | ": p.name,
"Model number => ": p.metadata.sku
}
FROM
products p
[
{
"Product's name | ": "Teapo rainbow surfboard",
"Model number => ": "72109"
}
]
Eventos
Crie aplicativos e agentes de IA
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Módulo
Consultar o Azure Cosmos DB for NoSQL - Training
Crie consultas para o Azure Cosmos DB for NoSQL usando a linguagem de consulta SQL.
Certificação
Microsoft Certified: Azure Cosmos DB Developer Specialty - Certifications
Escreva consultas eficientes, crie políticas de indexação, gerencie e provisione recursos na API e no SDK do SQL com o Microsoft Azure Cosmos DB.