N1QL é uma linguagem de consulta de última geração para o Couchbase Server. Ela vai além do SQL e do modelo relacional de várias maneiras - o mais importante é que os atributos no N1QL podem conter vários valores, e esses valores podem ser aninhados. Neste blog, examinaremos algumas consultas N1QL que são comumente vistas em um aplicativo de comércio eletrônico. Esse tipo de aplicativo teria uma variedade de dados ricos relacionados a produtos, clientese compras.
Primeiro, vamos obter uma lista de produtos pertencentes a uma categoria específica (neste caso, estou procurando por "eletrodomésticos")
SELECIONAR produto
DE produto
INÚTIL produto.categorias como categorias
ONDE categorias = "Eletrodomésticos"
Agora encontrei um aparelho que quero comprar, mas antes de fazer o check-out, preciso fazer login na loja. Seu aplicativo pode armazenar perfis de usuário no Couchbase na forma de documentos JSON, conforme mostrado abaixo:
{
"ccInfo": {
"cardExpiry": "2013-09-12",
"cardNumber": “1228-1221-1221-1431”,
"cardType": "discover"
},
"customerId": "customer0",
"dateAdded": “2013-06-23T04:32:31Z”,
"dateLastActive": “2013-07-23T04:32:31Z”,
"emailAddress": "zion@armstronghaley.biz",
"firstName": "Rosella",
"lastName": "Tremblay",
"phoneNumber": "1-543-962-9861 x534",
"postalCode": "75832",
"Estado": "PR",
"type": "customer"
}
]
….
Agora, vamos obter uma lista de clientes e seus endereços de e-mail. Para fazer isso, você pode usar a seguinte consulta N1QL :
SELECIONAR firstName || ” “ || lastName como fullName, emailAddress
DE cliente
|| é usado para concatenar cadeias de caracteres no N1QL. O resultado dessa consulta será algo parecido com o seguinte -
{
"emailAddress": "zion@armstronghaley.biz",
"fullName": "Rosella Tremblay"
},
{
"emailAddress": "kobe@douglas.net",
"fullName": "Erich Toy"
},
….
Depois de fazer o login, adiciono o item ao meu carrinho de compras. Antes de fazer o check-out, adiciono mais alguns itens de que gosto ao meu carrinho de compras. Em seguida, envio meu pedido. Pouco tempo depois, a equipe de expedição é notificada de que um pedido foi feito e gostaria de revisar meu pedido de compra para preparar o pacote a ser enviado pelo correio.
A consulta N1QL a seguir preparará o pedido de compra para "purchase0"
SELECIONAR compras, produto, cliente
DE compras CHAVE "purchase0" INÚTIL compras.lineItems AS itens
JUNTAR produto CHAVE itens.produto
JUNTAR cliente CHAVE compras.customerId
No final do ano, a loja deseja revisar sua vendas. A consulta N1QL a seguir calcula as vendas mês a mês.
SELECIONAR substrato(compras.purchasedAt, 0, 7) como mês, rodada(soma(produto.unitPrice * itens.contagem)/1000000, 3) como receitaMilhões
DE compras não registrado compras.lineItems como itens unir-se produto chave itens.produto
GRUPO BY substrato(compras.purchasedAt, 0, 7)
ORDEM BY mês
Quer mais?
Apenas examinamos superficialmente algumas consultas N1QL relacionadas ao comércio eletrônico. Para saber mais sobre o N1QL, confira http://query.couchbase.com e não se esqueça de se registrar para o nosso próximo Webinar N1QL para analisar esse caso de uso em mais detalhes.