N1QL es un lenguaje de consulta de nueva generación para Couchbase Server. Va más allá de SQL y el modelo relacional de varias maneras - lo más importante, los atributos en N1QL pueden contener múltiples valores, y estos valores pueden ser anidados. En este blog, vamos a repasar algunas consultas N1QL que se ven comúnmente en una aplicación de comercio electrónico. Este tipo de aplicación tendría una variedad de datos ricos relacionados con productos, clientesy compras.
En primer lugar, vamos a obtener una lista de productos pertenecer a una categoría determinada (en este caso, busco "electrodomésticos")
SELECCIONE producto
DESDE producto
UNNEST producto.categorías como categorías
DONDE categorías = "Electrodomésticos"
Ahora he encontrado un aparato que quiero comprar, pero antes de pasar por caja, necesito iniciar sesión en la tienda. Tu aplicación puede almacenar perfiles de usuario en Couchbase en forma de documentos JSON como se muestra a continuación:
{
"ccInfo": {
"caducidad tarjeta": "2013-09-12",
"cardNumber": “1228-1221-1221-1431”,
"cardType": "descubrir"
},
"customerId": "cliente0",
"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",
"código postal": "75832",
"estado": "PR",
"tipo": "cliente"
}
]
….
Ahora, vamos a obtener una lista de clientes y sus direcciones de correo electrónico. Para ello, puede utilizar la siguiente consulta N1QL :
SELECCIONE firstName || ” “ || apellido como fullName, dirección de correo electrónico
DESDE cliente
|| se utiliza para concatenar cadenas en N1QL. El resultado de esta consulta será algo como lo siguiente -
{
"emailAddress": "zion@armstronghaley.biz",
"fullName": "Rosella Tremblay"
},
{
"emailAddress": "kobe@douglas.net",
"fullName": "Erich Toy"
},
….
Después de conectarme, añado el artículo a mi cesta de la compra. Antes de pasar por caja, añado otros artículos que me gustan a la cesta. A continuación, envío mi pedido. Poco después, el equipo de envíos recibe la notificación de que se ha realizado un pedido y desea revisar mi orden de compra para preparar el paquete que se enviará por correo.
La siguiente consulta N1QL, preparará la orden de compra para "purchase0".
SELECCIONE compras, producto, cliente
DESDE compras CLAVE "compra0" UNNEST compras.lineItems AS artículos
ÚNASE A producto CLAVE artículos.producto
ÚNASE A cliente CLAVE compras.customerId
A finales de año, la tienda quiere revisar sus ventas. La siguiente consulta N1QL calcula las ventas mes a mes.
SELECCIONE substr(compras.compradoEn, 0, 7) como mes, redondo(suma(producto.precio unitario * artículos.cuente)/1000000, 3) como ingresosMillones
DESDE compras sin anestesia compras.lineItems como artículos únase a producto clave artículos.producto
GRUPO POR substr(compras.compradoEn, 0, 7)
PEDIR POR mes
¿Quieres más?
Sólo hemos repasado algunas consultas N1QL relacionadas con el comercio electrónico. Para saber más sobre N1QL, consulte http://query.couchbase.com y no olvide inscribirse en nuestro próximo Seminario web N1QL para analizar este caso con más detalle.