From bc4f5d6428795c9742bb209cb935e0cc99d61c03 Mon Sep 17 00:00:00 2001 From: adigenova Date: Tue, 12 Jul 2022 09:40:54 -0400 Subject: [PATCH] Queries and joins with ArangoDB on document db --- code/NoSQL_ArangoDB_ejemplo.ipynb | 1553 +++++++++++++++++++++++++++++ 1 file changed, 1553 insertions(+) create mode 100644 code/NoSQL_ArangoDB_ejemplo.ipynb diff --git a/code/NoSQL_ArangoDB_ejemplo.ipynb b/code/NoSQL_ArangoDB_ejemplo.ipynb new file mode 100644 index 0000000..713f085 --- /dev/null +++ b/code/NoSQL_ArangoDB_ejemplo.ipynb @@ -0,0 +1,1553 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EjHT0pfkd50d" + }, + "source": [ + "![arangodb](https://github.com/arangodb/interactive_tutorials/blob/master/notebooks/img/ArangoDB_logo.png?raw=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XIHPS095d50h" + }, + "source": [ + "# Tutorial de Arango DB" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Brl97lYwd50i" + }, + "source": [ + "ArangoDB es una base de datos multimodelo con modelos de datos flexibles para documentos, grafos y clave/valor. Posee el lenguaje AQL que es similar al SQL para realizar consultas." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cTIT0ffjd50i" + }, + "source": [ + "# Instalación " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Pmp2AMIhd50j" + }, + "source": [ + "Antes de comenzar con ArangoDB, debemos preparar nuestro entorno y crear una base de datos temporal en el Servicio Oasis." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "r2KGTMwUlvFn" + }, + "outputs": [], + "source": [ + "%%capture\n", + "!git clone -b oasis_connector --single-branch https://github.com/arangodb/interactive_tutorials.git\n", + "!rsync -av interactive_tutorials/ ./ --exclude=.git\n", + "!pip3 install pyarango\n", + "!pip3 install \"python-arango>=5.0\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "hdHIAso1lvFo" + }, + "outputs": [], + "source": [ + "import json\n", + "import requests\n", + "import sys\n", + "import oasis\n", + "import time\n", + "\n", + "from pyArango.connection import *\n", + "from arango import ArangoClient" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fuQ6phTMd50m" + }, + "source": [ + "Creamos una base de datos temporal" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "wag0VrQDlvFp", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d4c695d8-a3f0-4002-cdd8-2c21e3e362ca" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requesting new temp credentials.\n", + "Temp database ready to use.\n" + ] + } + ], + "source": [ + "# Retrieve tmp credentials from ArangoDB Tutorial Service\n", + "login = oasis.getTempCredentials(tutorialName=\"AQLCrudTutorial\", credentialProvider='https://tutorials.arangodb.cloud:8529/_db/_system/tutorialDB/tutorialDB')\n", + "# Connect to the temp database\n", + "conn = oasis.connect(login)\n", + "pyAr_db = conn[login[\"dbName\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "id": "70sAR2rYlvFq" + }, + "outputs": [], + "source": [ + "python_arango_db = oasis.connect_python_arango(login)\n", + "aql = python_arango_db.aql" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "pxnn2UBSlvFq", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "4857b535-06df-48aa-8469-a85acb2a36f6" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "https://tutorials.arangodb.cloud:8529\n", + "Username: TUTyldq5mspzo9jvsgn79708\n", + "Password: TUTe56xixvmuxchib9ht1jdrv\n", + "Database: TUTy29y9plwkarpz9mkn2c628\n" + ] + } + ], + "source": [ + "print(\"https://{}:{}\".format(login[\"hostname\"], login[\"port\"]))\n", + "print(\"Username: \" + login[\"username\"])\n", + "print(\"Password: \" + login[\"password\"])\n", + "print(\"Database: \" + login[\"dbName\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7Q0YpfHvd50n" + }, + "source": [ + "Podemos usar la URL anterior para revisar nuestra base de datos arango temporal.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tsRp_icod50o" + }, + "source": [ + "## Creando Colecciones" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fsO_ZUitd50o" + }, + "source": [ + "Antes de que podamos insertar documentos con AQL, necesitamos un lugar para colocarlos: una colección" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "xJcYVn6TlvFr" + }, + "outputs": [], + "source": [ + "# creamos la coleccion usando pyArango\n", + "pyAr_db.createCollection(name=\"Personajes\")\n", + "if python_arango_db.has_collection(\"Personajes\"):\n", + " pass\n", + "else:\n", + " python_arango_db.create_collection(\"Pesonajes\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "As_8QOgld50o" + }, + "source": [ + "## Creando y leyendo documentos" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-jfzubbNd50p" + }, + "source": [ + "La sintaxis para crear un nuevo documento es INSERT document INTO collectionName. El documento es un objeto JSON, que se compone de pares de clave de atributo y valor.\n", + "\n", + "Las claves son siempre secuencias de caracteres (cadenas), mientras que los valores de los atributos pueden tener diferentes tipos:\n", + "\n", + "* null\n", + "* boolean (true, false)\n", + "* number (integer and floating point)\n", + "* string\n", + "* array\n", + "* object\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "pYcxlVoJlvFs", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "84505590-c5f4-46e3-b478-6da3cced7fef" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ], + "source": [ + "insert_query = \"\"\"\n", + "INSERT {\n", + " \"nombre\": \"Alex\",\n", + " \"apellido\": \"Di Genova\",\n", + " \"vivo\": true,\n", + " \"edad\": 41,\n", + " \"caracteres\": [\"A\",\"H\",\"C\",\"N\",\"P\"]\n", + "} INTO Personajes\n", + "\"\"\"\n", + "# python-arango\n", + "aql.execute(insert_query)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yUXQIb6sd50q" + }, + "source": [ + "Chequamos si la inserción se realizo con exito en la colleción Personajes.\n", + "Para cada documento de la colección, a c se le asigna un documento, que luego se devuelve según el cuerpo del bucle." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "TXNyeNpolvFs", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "dbab718b-e363-4462-f8f7-aec432c28a49" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'_key': '4168077885', '_id': 'Personajes/4168077885', '_rev': '_edAjaQK---', 'apellido': 'Di Genova', 'caracteres': ['A', 'H', 'C', 'N', 'P'], 'edad': 41, 'nombre': 'Alex', 'vivo': True}\n" + ] + } + ], + "source": [ + "todos_personajes = \"\"\"\n", + "FOR c IN Personajes\n", + " RETURN c\n", + "\"\"\"\n", + "query_result = aql.execute(todos_personajes) \n", + "for doc in query_result:\n", + " print(doc)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "khbGt6zud50q" + }, + "source": [ + "The document features the four attributes we stored, plus three more added by the database system. Each document needs a unique `_key`, which identifies it within a collection. The `_id` is a computed property, a concatenation of the collection name, a forward slash `/` and the document key. It uniquely identies a document within a database. `_rev` is a revision ID managed by the system. Older revisions of a document cannot be accessed.\n", + "Document keys can be provided by the user upon document creation, or a unique value is assigned automatically. It can not be changed later. All three system attributes starting with an underscore `_` are read-only." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b9WJ-CDrd50q" + }, + "source": [ + "Next, let us add some more characters. The `LET` keyword defines a variable with name data and an array of objects as value, so `LET variableName = valueExpression` and the expression being a literal array definition like `[ {...}, {...}, ... ]`.\n", + "\n", + "`FOR variableName IN expression` is used to iterate over each element of the data array. In each loop, one element is assigned to the variable `d`. This variable is then used in the `INSERT` statement instead of a literal object definition. What is does is basically:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "frgc7A43lvFt", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "91a907d8-2557-46f3-8abb-2fddea9d3c89" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "insert_query = \"\"\"\n", + "LET data = [\n", + " { \"nombre\": \"Roberto\", \"apellido\": \"Ramirez\", \"vivo\": false, \"caracteres\": [\"A\",\"H\",\"C\"] },\n", + " { \"nombre\": \"Jaime\", \"apellido\": \"Quinteros\", \"vivo\": true, \"edad\": 36, \"caracteres\": [\"A\",\"F\",\"B\"] },\n", + " { \"nombre\": \"Catalina\", \"apellido\": \"rojas\", \"vivo\": false, \"edad\": 40, \"caracteres\": [\"D\",\"H\",\"C\"] },\n", + " { \"nombre\": \"Cesar\", \"apellido\": \"Lanaro\", \"vivo\": true, \"edad\": 36, \"caracteres\": [\"H\",\"E\",\"F\"] },\n", + " { \"nombre\": \"David\", \"apellido\": \"Tardon\", \"vivo\": true, \"edad\": 16, \"caracteres\": [\"D\",\"H\",\"C\"] },\n", + " { \"nombre\": \"Jose\", \"apellido\": \"Mora\", \"vivo\": false, \"caracteres\": [\"A\",\"B\",\"C\",\"F\"] },\n", + " { \"nombre\": \"Pedro\", \"apellido\": \"Baesa\", \"vivo\": false, \"caracteres\": [\"E\",\"G\",\"F\"] },\n", + " { \"nombre\": \"Guillermo\", \"apellido\": \"Toro\", \"vivo\": false, \"caracteres\": [\"O\",\"L\",\"N\"] },\n", + " { \"nombre\": \"Juan\", \"apellido\": \"Niebla\", \"vivo\": true, \"edad\": 16, \"caracteres\": [\"A\",\"B\",\"C\",\"F\"] },\n", + " { \"nombre\": \"Sara\", \"apellido\": \"Rojas\", \"vivo\": true, \"edad\": 13, \"caracteres\": [\"D\",\"I\",\"J\"] },\n", + " { \"nombre\": \"Ariela\", \"apellido\": \"Araya\", \"vivo\": true, \"edad\": 11, \"caracteres\": [\"C\",\"K\",\"L\"] },\n", + " { \"nombre\": \"Roberto\", \"apellido\": \"Cabezas\", \"vivo\": false, \"caracteres\": [\"A\",\"B\",\"C\",\"K\"] },\n", + " { \"nombre\": \"Theon\", \"apellido\": \"Greyjoy\", \"vivo\": true, \"edad\": 16, \"caracteres\": [\"E\",\"R\",\"K\"] },\n", + " { \"nombre\": \"Bran\", \"apellido\": \"Stark\", \"vivo\": true, \"edad\": 10, \"caracteres\": [\"L\",\"J\"] },\n", + " { \"nombre\": \"Joffrey\", \"apellido\": \"Baratheon\", \"vivo\": false, \"edad\": 19, \"caracteres\": [\"I\",\"L\",\"O\"] },\n", + " { \"nombre\": \"Sandor\", \"apellido\": \"Clegane\", \"vivo\": true, \"caracteres\": [\"A\",\"P\",\"K\",\"F\"] },\n", + " { \"nombre\": \"Tyrion\", \"apellido\": \"Lannister\", \"vivo\": true, \"edad\": 32, \"caracteres\": [\"F\",\"K\",\"M\",\"N\"] },\n", + " { \"nombre\": \"Khal\", \"apellido\": \"Drogo\", \"vivo\": false, \"caracteres\": [\"A\",\"C\",\"O\",\"P\"] },\n", + " { \"nombre\": \"Tywin\", \"apellido\": \"Lannister\", \"vivo\": false, \"caracteres\": [\"O\",\"M\",\"H\",\"F\"] },\n", + " { \"nombre\": \"Davos\", \"apellido\": \"Seaworth\", \"vivo\": true, \"edad\": 49, \"caracteres\": [\"C\",\"K\",\"P\",\"F\"] },\n", + " { \"nombre\": \"Samwell\", \"apellido\": \"Tarly\", \"vivo\": true, \"edad\": 17, \"caracteres\": [\"C\",\"L\",\"I\"] },\n", + " { \"nombre\": \"Stannis\", \"apellido\": \"Baratheon\", \"vivo\": false, \"caracteres\": [\"H\",\"O\",\"P\",\"M\"] },\n", + " { \"nombre\": \"Melisandre\", \"vivo\": true, \"caracteres\": [\"G\",\"E\",\"H\"] },\n", + " { \"nombre\": \"Margaery\", \"apellido\": \"Tyrell\", \"vivo\": false, \"caracteres\": [\"M\",\"D\",\"B\"] },\n", + " { \"nombre\": \"Jeor\", \"apellido\": \"Mormont\", \"vivo\": false, \"caracteres\": [\"C\",\"H\",\"M\",\"P\"] },\n", + " { \"nombre\": \"Bronn\", \"vivo\": true, \"caracteres\": [\"K\",\"E\",\"C\"] },\n", + " { \"nombre\": \"Varys\", \"vivo\": true, \"caracteres\": [\"M\",\"F\",\"N\",\"E\"] },\n", + " { \"nombre\": \"Shae\", \"vivo\": false, \"caracteres\": [\"M\",\"D\",\"G\"] },\n", + " { \"nombre\": \"Talisa\", \"apellido\": \"Maegyr\", \"vivo\": false, \"caracteres\": [\"D\",\"C\",\"B\"] },\n", + " { \"nombre\": \"Gendry\", \"vivo\": false, \"caracteres\": [\"K\",\"C\",\"A\"] },\n", + " { \"nombre\": \"Ygritte\", \"vivo\": false, \"caracteres\": [\"A\",\"P\",\"K\"] },\n", + " { \"nombre\": \"Tormund\", \"apellido\": \"Giantsbane\", \"vivo\": true, \"caracteres\": [\"C\",\"P\",\"A\",\"I\"] },\n", + " { \"nombre\": \"Gilly\", \"vivo\": true, \"caracteres\": [\"L\",\"J\"] },\n", + " { \"nombre\": \"Brienne\", \"apellido\": \"Tarth\", \"vivo\": true, \"edad\": 32, \"caracteres\": [\"P\",\"C\",\"A\",\"K\"] },\n", + " { \"nombre\": \"Ramsay\", \"apellido\": \"Bolton\", \"vivo\": true, \"caracteres\": [\"E\",\"O\",\"G\",\"A\"] },\n", + " { \"nombre\": \"Ellaria\", \"apellido\": \"Sand\", \"vivo\": true, \"caracteres\": [\"P\",\"O\",\"A\",\"E\"] },\n", + " { \"nombre\": \"Daario\", \"apellido\": \"Naharis\", \"vivo\": true, \"caracteres\": [\"K\",\"P\",\"A\"] },\n", + " { \"nombre\": \"Missandei\", \"vivo\": true, \"caracteres\": [\"D\",\"L\",\"C\",\"M\"] },\n", + " { \"nombre\": \"Tommen\", \"apellido\": \"Baratheon\", \"vivo\": true, \"caracteres\": [\"I\",\"L\",\"B\"] },\n", + " { \"nombre\": \"Jaqen\", \"apellido\": \"H'ghar\", \"vivo\": true, \"caracteres\": [\"H\",\"F\",\"K\"] },\n", + " { \"nombre\": \"Roose\", \"apellido\": \"Bolton\", \"vivo\": true, \"caracteres\": [\"H\",\"E\",\"F\",\"A\"] },\n", + " { \"nombre\": \"The High Sparrow\", \"vivo\": true, \"caracteres\": [\"H\",\"M\",\"F\",\"O\"] }\n", + "]\n", + "\n", + "FOR d IN data\n", + " INSERT d INTO Personajes\n", + "\"\"\"\n", + "# python-arango\n", + "aql.execute(insert_query)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7yaBXHLPd50r" + }, + "source": [ + "As before let us check the `Characters` collection, but this time only return each characters name:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "CsGnXB2TlvFt", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "a3b90094-0fcd-4316-8467-fba37afd52f8" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'n': 'Alex', 'e': 41, 'v': True}\n", + "{'n': 'Roberto', 'e': None, 'v': False}\n", + "{'n': 'Jaime', 'e': 36, 'v': True}\n", + "{'n': 'Catalina', 'e': 40, 'v': False}\n", + "{'n': 'Cesar', 'e': 36, 'v': True}\n", + "{'n': 'David', 'e': 16, 'v': True}\n", + "{'n': 'Jose', 'e': None, 'v': False}\n", + "{'n': 'Pedro', 'e': None, 'v': False}\n", + "{'n': 'Guillermo', 'e': None, 'v': False}\n", + "{'n': 'Juan', 'e': 16, 'v': True}\n", + "{'n': 'Sara', 'e': 13, 'v': True}\n", + "{'n': 'Ariela', 'e': 11, 'v': True}\n", + "{'n': 'Roberto', 'e': None, 'v': False}\n", + "{'n': 'Theon', 'e': 16, 'v': True}\n", + "{'n': 'Bran', 'e': 10, 'v': True}\n", + "{'n': 'Joffrey', 'e': 19, 'v': False}\n", + "{'n': 'Sandor', 'e': None, 'v': True}\n", + "{'n': 'Tyrion', 'e': 32, 'v': True}\n", + "{'n': 'Khal', 'e': None, 'v': False}\n", + "{'n': 'Tywin', 'e': None, 'v': False}\n", + "{'n': 'Davos', 'e': 49, 'v': True}\n", + "{'n': 'Samwell', 'e': 17, 'v': True}\n", + "{'n': 'Stannis', 'e': None, 'v': False}\n", + "{'n': 'Melisandre', 'e': None, 'v': True}\n", + "{'n': 'Margaery', 'e': None, 'v': False}\n", + "{'n': 'Jeor', 'e': None, 'v': False}\n", + "{'n': 'Bronn', 'e': None, 'v': True}\n", + "{'n': 'Varys', 'e': None, 'v': True}\n", + "{'n': 'Shae', 'e': None, 'v': False}\n", + "{'n': 'Talisa', 'e': None, 'v': False}\n", + "{'n': 'Gendry', 'e': None, 'v': False}\n", + "{'n': 'Ygritte', 'e': None, 'v': False}\n", + "{'n': 'Tormund', 'e': None, 'v': True}\n", + "{'n': 'Gilly', 'e': None, 'v': True}\n", + "{'n': 'Brienne', 'e': 32, 'v': True}\n", + "{'n': 'Ramsay', 'e': None, 'v': True}\n", + "{'n': 'Ellaria', 'e': None, 'v': True}\n", + "{'n': 'Daario', 'e': None, 'v': True}\n", + "{'n': 'Missandei', 'e': None, 'v': True}\n", + "{'n': 'Tommen', 'e': None, 'v': True}\n", + "{'n': 'Jaqen', 'e': None, 'v': True}\n", + "{'n': 'Roose', 'e': None, 'v': True}\n", + "{'n': 'The High Sparrow', 'e': None, 'v': True}\n" + ] + } + ], + "source": [ + "todos_personajes_nombre = \"\"\"\n", + "FOR c IN Personajes\n", + " RETURN { n:c.nombre,e:c.edad, v:c.vivo }\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(todos_personajes_nombre)\n", + "for doc in query_result:\n", + " print(doc)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pVBvoGkId50s" + }, + "source": [ + "# Actualizando Documentos" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "id": "aTR2XRFGlvFt", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "bc7b1abd-a1f0-47a8-e43e-36d27006714b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "_key: 266302775424\n", + "_key: 266302775426\n", + "_key: 266302775429\n", + "_key: 266302775430\n", + "_key: 266302775431\n", + "_key: 266302775435\n", + "_key: 266302775438\n", + "_key: 266302775441\n", + "_key: 266302775442\n", + "_key: 266302775445\n", + "_key: 266302775447\n", + "_key: 266302775448\n", + "_key: 266302775451\n", + "_key: 266302775452\n", + "_key: 266302775453\n" + ] + } + ], + "source": [ + "revivir_todos_personajes= \"\"\"\n", + "FOR c IN Personajes\n", + " FILTER c.vivo == False\n", + " RETURN c._key\n", + "\"\"\"\n", + "\n", + "neds_document_key = list()\n", + "\n", + "# python-arango\n", + "query_result = aql.execute(revivir_todos_personajes)\n", + "\n", + "for doc in query_result:\n", + " print(\"_key: \" + str(doc))\n", + " neds_document_key.append(doc)" + ] + }, + { + "cell_type": "code", + "source": [ + "neds_document_key[0]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "cwiKRs9CvDe8", + "outputId": "a6e78bd2-bbd4-489b-c8b5-5904b4d1874d" + }, + "execution_count": 45, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'266302775424'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 45 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4LLZDtZ6d50s" + }, + "source": [ + "\n", + "\n", + "actualizando un documento por key:" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "id": "VtT13_G9lvFt", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "957398b0-c80d-4d8a-8e6a-419fd66f892c" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'k': '4168077885', 'n': 'Alex', 'e': 41, 'v': True}\n", + "{'k': '266302775425', 'n': 'Jaime', 'e': 36, 'v': True}\n", + "{'k': '266302775426', 'n': 'Catalina', 'e': 40, 'v': False}\n", + "{'k': '266302775427', 'n': 'Cesar', 'e': 36, 'v': True}\n", + "{'k': '266302775428', 'n': 'David', 'e': 16, 'v': True}\n", + "{'k': '266302775429', 'n': 'Jose', 'e': None, 'v': False}\n", + "{'k': '266302775430', 'n': 'Pedro', 'e': None, 'v': False}\n", + "{'k': '266302775431', 'n': 'Guillermo', 'e': None, 'v': False}\n", + "{'k': '266302775432', 'n': 'Juan', 'e': 16, 'v': True}\n", + "{'k': '266302775433', 'n': 'Sara', 'e': 13, 'v': True}\n", + "{'k': '266302775434', 'n': 'Ariela', 'e': 11, 'v': True}\n", + "{'k': '266302775435', 'n': 'Roberto', 'e': None, 'v': False}\n", + "{'k': '266302775436', 'n': 'Theon', 'e': 16, 'v': True}\n", + "{'k': '266302775437', 'n': 'Bran', 'e': 10, 'v': True}\n", + "{'k': '266302775438', 'n': 'Joffrey', 'e': 19, 'v': False}\n", + "{'k': '266302775439', 'n': 'Sandor', 'e': None, 'v': True}\n", + "{'k': '266302775440', 'n': 'Tyrion', 'e': 32, 'v': True}\n", + "{'k': '266302775441', 'n': 'Khal', 'e': None, 'v': False}\n", + "{'k': '266302775442', 'n': 'Tywin', 'e': None, 'v': False}\n", + "{'k': '266302775443', 'n': 'Davos', 'e': 49, 'v': True}\n", + "{'k': '266302775444', 'n': 'Samwell', 'e': 17, 'v': True}\n", + "{'k': '266302775445', 'n': 'Stannis', 'e': None, 'v': False}\n", + "{'k': '266302775446', 'n': 'Melisandre', 'e': None, 'v': True}\n", + "{'k': '266302775447', 'n': 'Margaery', 'e': None, 'v': False}\n", + "{'k': '266302775448', 'n': 'Jeor', 'e': None, 'v': False}\n", + "{'k': '266302775449', 'n': 'Bronn', 'e': None, 'v': True}\n", + "{'k': '266302775450', 'n': 'Varys', 'e': None, 'v': True}\n", + "{'k': '266302775451', 'n': 'Shae', 'e': None, 'v': False}\n", + "{'k': '266302775452', 'n': 'Talisa', 'e': None, 'v': False}\n", + "{'k': '266302775453', 'n': 'Gendry', 'e': None, 'v': False}\n", + "{'k': '266302775455', 'n': 'Tormund', 'e': None, 'v': True}\n", + "{'k': '266302775456', 'n': 'Gilly', 'e': None, 'v': True}\n", + "{'k': '266302775457', 'n': 'Brienne', 'e': 32, 'v': True}\n", + "{'k': '266302775458', 'n': 'Ramsay', 'e': None, 'v': True}\n", + "{'k': '266302775459', 'n': 'Ellaria', 'e': None, 'v': True}\n", + "{'k': '266302775460', 'n': 'Daario', 'e': None, 'v': True}\n", + "{'k': '266302775461', 'n': 'Missandei', 'e': None, 'v': True}\n", + "{'k': '266302775462', 'n': 'Tommen', 'e': None, 'v': True}\n", + "{'k': '266302775463', 'n': 'Jaqen', 'e': None, 'v': True}\n", + "{'k': '266302775464', 'n': 'Roose', 'e': None, 'v': True}\n", + "{'k': '266302775465', 'n': 'The High Sparrow', 'e': None, 'v': True}\n", + "{'k': '266302775454', 'n': 'Ygritte', 'e': None, 'v': True}\n", + "{'k': '266302775424', 'n': 'Roberto', 'e': None, 'v': True}\n" + ] + } + ], + "source": [ + "muertos = \"\"\"\n", + "UPDATE @key \n", + "WITH { vivo: True} \n", + "IN Personajes\n", + "\"\"\"\n", + "bindVars = {'key': neds_document_key[0]}\n", + "\n", + "aql.execute(muertos, batch_size=1, bind_vars=bindVars)\n", + "\n", + "todos_personajes = \"\"\"\n", + "FOR c IN Personajes\n", + " RETURN { k:c._key, n:c.nombre,e:c.edad, v:c.vivo }\n", + "\"\"\"\n", + "query_result = aql.execute(todos_personajes)\n", + "for doc in query_result:\n", + " print(doc)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2bCwlG6_d50u" + }, + "source": [ + "# Usando `FOR` para actualizar todos los personajes:" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "id": "_9PbKVJ2lvFu", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "285c0fc0-785e-4189-d813-6840a6a33e6b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'Nombre': 'Roberto', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Jaime', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Catalina', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Cesar', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'David', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Jose', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Pedro', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Guillermo', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Juan', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Sara', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Ariela', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Roberto', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Theon', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Bran', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Joffrey', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Sandor', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Tyrion', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Khal', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Tywin', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Davos', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Samwell', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Stannis', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Melisandre', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Margaery', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Jeor', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Bronn', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Varys', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Shae', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Talisa', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Gendry', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Ygritte', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Tormund', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Gilly', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Brienne', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Ramsay', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Ellaria', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Daario', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Missandei', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Tommen', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Jaqen', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Roose', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'The High Sparrow', 'Equipo': 'Colo Colo', 'Vivo': True}\n", + "{'Nombre': 'Alex', 'Equipo': 'Colo Colo', 'Vivo': True}\n" + ] + } + ], + "source": [ + "actualizar_equipo_vivo = \"\"\"\n", + "FOR c IN Personajes\n", + " UPDATE c WITH { vivo: True, equipo : \"Colo Colo\" } IN Personajes\n", + "\"\"\"\n", + "# python-arango\n", + "aql.execute(actualizar_equipo_vivo)\n", + "\n", + "todos_personajes_equipo_vivo = \"\"\"\n", + "FOR c IN Personajes\n", + " RETURN {\"Nombre\" : c.nombre, \"Equipo\" : c.equipo, \"Vivo\": c.vivo}\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(todos_personajes_equipo_vivo)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XRHqd22qd50v" + }, + "source": [ + "Note, that here we customized the `RETURN` to return a json document consisting of name and season." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "o9rhcAeid50v" + }, + "source": [ + "# Borrando Documentos por clave" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qy2izew-d50v" + }, + "source": [ + "Para eliminar documentos de una coleccion podemos utilizar REMOVE" + ] + }, + { + "cell_type": "code", + "source": [ + "buscando_alex= \"\"\"\n", + "FOR c IN Personajes\n", + " FILTER c.nombre == \"Alex\"\n", + " RETURN c._key\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(buscando_alex)\n", + "\n", + "id_alex = None\n", + "for doc in query_result:\n", + " print(doc)\n", + " id_alex=doc" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WlUqwYmVzfL7", + "outputId": "05b90a5b-5193-44bf-8827-8cc1b02ea928" + }, + "execution_count": 53, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "4168077885\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "id": "vdTxIw3mlvFu", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "3ac9eb26-fe91-4a04-f0e1-b8a8cc4342a3" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Alex fue borrado.\n", + "Alex no fue encontrado.\n" + ] + } + ], + "source": [ + "remove_alex = \"\"\"\n", + "REMOVE @key IN Personajes\n", + "\"\"\"\n", + "bindVars = {'key': id_alex}\n", + "\n", + "try:\n", + " # python-arango\n", + " aql.execute(remove_alex, bind_vars=bindVars)\n", + "except:\n", + " print(\"Alex fue borrado.\")\n", + "\n", + "encontrar_alex = \"\"\"\n", + "FOR c IN Personajes\n", + " FILTER c.nombre == \"Alex\"\n", + " RETURN c\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(encontrar_alex, count=True)\n", + "\n", + "if len(query_result) == 0 :\n", + " print(\"Alex no fue encontrado.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "d3i2JnKdd50v" + }, + "source": [ + "Con un FOR podemos eliminar todos los documentos de la coleccion:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WfGuylYQlvFu" + }, + "outputs": [], + "source": [ + "borrar_todos = \"\"\"\n", + "FOR c IN Personajes\n", + " REMOVE c IN Personajes\n", + "\"\"\"\n", + "# python-arango\n", + "aql.execute(borrar_todos)\n", + "\n", + "todos_personajes = \"\"\"\n", + "FOR c IN Personajes\n", + " RETURN c\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(todos_personajes, count=True)\n", + "\n", + "if len(query_result) == 0 :\n", + " print(\"Todos los personajes fueron borrados.\")" + ] + }, + { + "cell_type": "code", + "source": [ + "filtro_edad = \"\"\"\n", + "FOR c IN Personajes\n", + " FILTER c.edad < 20 AND c.edad != null\n", + " RETURN { nombre: c.nombre, edad: c.edad }\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(filtro_edad)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 240 + }, + "id": "E7C2Fk4SFw-J", + "outputId": "c985a411-7584-4e9f-bee3-fc05107988f5" + }, + "execution_count": 1, + "outputs": [ + { + "output_type": "error", + "ename": "NameError", + "evalue": "ignored", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \"\"\"\n\u001b[1;32m 6\u001b[0m \u001b[0;31m# python-arango\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mquery_result\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0maql\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiltro_edad\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mdoc\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mquery_result\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'aql' is not defined" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "sort_nombre = \"\"\"\n", + "FOR c IN Personajes\n", + " SORT c.nombre\n", + " RETURN c\n", + "\"\"\"\n", + "query_result = aql.execute(sort_nombre)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "oh_-q5m7GO_M", + "outputId": "44ddc22f-445e-49b0-ae72-a0b965d019fa" + }, + "execution_count": 61, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'_key': '266302775434', '_id': 'Personajes/266302775434', '_rev': '_edBIuVq--I', 'nombre': 'Ariela', 'apellido': 'Araya', 'vivo': True, 'edad': 11, 'caracteres': ['C', 'K', 'L'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775437', '_id': 'Personajes/266302775437', '_rev': '_edBIuVu---', 'nombre': 'Bran', 'apellido': 'Stark', 'vivo': True, 'edad': 10, 'caracteres': ['L', 'J'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775457', '_id': 'Personajes/266302775457', '_rev': '_edBIuVu--S', 'nombre': 'Brienne', 'apellido': 'Tarth', 'vivo': True, 'edad': 32, 'caracteres': ['P', 'C', 'A', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775449', '_id': 'Personajes/266302775449', '_rev': '_edBIuVu--K', 'nombre': 'Bronn', 'vivo': True, 'caracteres': ['K', 'E', 'C'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775426', '_id': 'Personajes/266302775426', '_rev': '_edBIuVq--A', 'nombre': 'Catalina', 'apellido': 'rojas', 'vivo': True, 'edad': 40, 'caracteres': ['D', 'H', 'C'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775427', '_id': 'Personajes/266302775427', '_rev': '_edBIuVq--B', 'nombre': 'Cesar', 'apellido': 'Lanaro', 'vivo': True, 'edad': 36, 'caracteres': ['H', 'E', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775460', '_id': 'Personajes/266302775460', '_rev': '_edBIuVu--V', 'nombre': 'Daario', 'apellido': 'Naharis', 'vivo': True, 'caracteres': ['K', 'P', 'A'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775428', '_id': 'Personajes/266302775428', '_rev': '_edBIuVq--C', 'nombre': 'David', 'apellido': 'Tardon', 'vivo': True, 'edad': 16, 'caracteres': ['D', 'H', 'C'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775443', '_id': 'Personajes/266302775443', '_rev': '_edBIuVu--E', 'nombre': 'Davos', 'apellido': 'Seaworth', 'vivo': True, 'edad': 49, 'caracteres': ['C', 'K', 'P', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775459', '_id': 'Personajes/266302775459', '_rev': '_edBIuVu--U', 'nombre': 'Ellaria', 'apellido': 'Sand', 'vivo': True, 'caracteres': ['P', 'O', 'A', 'E'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775453', '_id': 'Personajes/266302775453', '_rev': '_edBIuVu--O', 'nombre': 'Gendry', 'vivo': True, 'caracteres': ['K', 'C', 'A'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775456', '_id': 'Personajes/266302775456', '_rev': '_edBIuVu--R', 'nombre': 'Gilly', 'vivo': True, 'caracteres': ['L', 'J'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775431', '_id': 'Personajes/266302775431', '_rev': '_edBIuVq--F', 'nombre': 'Guillermo', 'apellido': 'Toro', 'vivo': True, 'caracteres': ['O', 'L', 'N'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775425', '_id': 'Personajes/266302775425', '_rev': '_edBIuVq--_', 'nombre': 'Jaime', 'apellido': 'Quinteros', 'vivo': True, 'edad': 36, 'caracteres': ['A', 'F', 'B'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775463', '_id': 'Personajes/266302775463', '_rev': '_edBIuVu--Y', 'nombre': 'Jaqen', 'apellido': \"H'ghar\", 'vivo': True, 'caracteres': ['H', 'F', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775448', '_id': 'Personajes/266302775448', '_rev': '_edBIuVu--J', 'nombre': 'Jeor', 'apellido': 'Mormont', 'vivo': True, 'caracteres': ['C', 'H', 'M', 'P'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775438', '_id': 'Personajes/266302775438', '_rev': '_edBIuVu--_', 'nombre': 'Joffrey', 'apellido': 'Baratheon', 'vivo': True, 'edad': 19, 'caracteres': ['I', 'L', 'O'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775429', '_id': 'Personajes/266302775429', '_rev': '_edBIuVq--D', 'nombre': 'Jose', 'apellido': 'Mora', 'vivo': True, 'caracteres': ['A', 'B', 'C', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775432', '_id': 'Personajes/266302775432', '_rev': '_edBIuVq--G', 'nombre': 'Juan', 'apellido': 'Niebla', 'vivo': True, 'edad': 16, 'caracteres': ['A', 'B', 'C', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775441', '_id': 'Personajes/266302775441', '_rev': '_edBIuVu--C', 'nombre': 'Khal', 'apellido': 'Drogo', 'vivo': True, 'caracteres': ['A', 'C', 'O', 'P'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775447', '_id': 'Personajes/266302775447', '_rev': '_edBIuVu--I', 'nombre': 'Margaery', 'apellido': 'Tyrell', 'vivo': True, 'caracteres': ['M', 'D', 'B'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775446', '_id': 'Personajes/266302775446', '_rev': '_edBIuVu--H', 'nombre': 'Melisandre', 'vivo': True, 'caracteres': ['G', 'E', 'H'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775461', '_id': 'Personajes/266302775461', '_rev': '_edBIuVu--W', 'nombre': 'Missandei', 'vivo': True, 'caracteres': ['D', 'L', 'C', 'M'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775430', '_id': 'Personajes/266302775430', '_rev': '_edBIuVq--E', 'nombre': 'Pedro', 'apellido': 'Baesa', 'vivo': True, 'caracteres': ['E', 'G', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775458', '_id': 'Personajes/266302775458', '_rev': '_edBIuVu--T', 'nombre': 'Ramsay', 'apellido': 'Bolton', 'vivo': True, 'caracteres': ['E', 'O', 'G', 'A'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775424', '_id': 'Personajes/266302775424', '_rev': '_edBIuVq---', 'nombre': 'Roberto', 'apellido': 'Ramirez', 'vivo': True, 'caracteres': ['A', 'H', 'C'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775435', '_id': 'Personajes/266302775435', '_rev': '_edBIuVq--J', 'nombre': 'Roberto', 'apellido': 'Cabezas', 'vivo': True, 'caracteres': ['A', 'B', 'C', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775464', '_id': 'Personajes/266302775464', '_rev': '_edBIuVu--Z', 'nombre': 'Roose', 'apellido': 'Bolton', 'vivo': True, 'caracteres': ['H', 'E', 'F', 'A'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775444', '_id': 'Personajes/266302775444', '_rev': '_edBIuVu--F', 'nombre': 'Samwell', 'apellido': 'Tarly', 'vivo': True, 'edad': 17, 'caracteres': ['C', 'L', 'I'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775439', '_id': 'Personajes/266302775439', '_rev': '_edBIuVu--A', 'nombre': 'Sandor', 'apellido': 'Clegane', 'vivo': True, 'caracteres': ['A', 'P', 'K', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775433', '_id': 'Personajes/266302775433', '_rev': '_edBIuVq--H', 'nombre': 'Sara', 'apellido': 'Rojas', 'vivo': True, 'edad': 13, 'caracteres': ['D', 'I', 'J'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775451', '_id': 'Personajes/266302775451', '_rev': '_edBIuVu--M', 'nombre': 'Shae', 'vivo': True, 'caracteres': ['M', 'D', 'G'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775445', '_id': 'Personajes/266302775445', '_rev': '_edBIuVu--G', 'nombre': 'Stannis', 'apellido': 'Baratheon', 'vivo': True, 'caracteres': ['H', 'O', 'P', 'M'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775452', '_id': 'Personajes/266302775452', '_rev': '_edBIuVu--N', 'nombre': 'Talisa', 'apellido': 'Maegyr', 'vivo': True, 'caracteres': ['D', 'C', 'B'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775465', '_id': 'Personajes/266302775465', '_rev': '_edBIuVu--a', 'nombre': 'The High Sparrow', 'vivo': True, 'caracteres': ['H', 'M', 'F', 'O'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775436', '_id': 'Personajes/266302775436', '_rev': '_edBIuVq--K', 'nombre': 'Theon', 'apellido': 'Greyjoy', 'vivo': True, 'edad': 16, 'caracteres': ['E', 'R', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775462', '_id': 'Personajes/266302775462', '_rev': '_edBIuVu--X', 'nombre': 'Tommen', 'apellido': 'Baratheon', 'vivo': True, 'caracteres': ['I', 'L', 'B'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775455', '_id': 'Personajes/266302775455', '_rev': '_edBIuVu--Q', 'nombre': 'Tormund', 'apellido': 'Giantsbane', 'vivo': True, 'caracteres': ['C', 'P', 'A', 'I'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775440', '_id': 'Personajes/266302775440', '_rev': '_edBIuVu--B', 'nombre': 'Tyrion', 'apellido': 'Lannister', 'vivo': True, 'edad': 32, 'caracteres': ['F', 'K', 'M', 'N'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775442', '_id': 'Personajes/266302775442', '_rev': '_edBIuVu--D', 'nombre': 'Tywin', 'apellido': 'Lannister', 'vivo': True, 'caracteres': ['O', 'M', 'H', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775450', '_id': 'Personajes/266302775450', '_rev': '_edBIuVu--L', 'nombre': 'Varys', 'vivo': True, 'caracteres': ['M', 'F', 'N', 'E'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775454', '_id': 'Personajes/266302775454', '_rev': '_edBIuVu--P', 'nombre': 'Ygritte', 'vivo': True, 'caracteres': ['A', 'P', 'K'], 'equipo': 'Colo Colo'}\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "sort_nombre = \"\"\"\n", + "FOR c IN Personajes\n", + " SORT c.nombre DESC\n", + " RETURN c\n", + "\"\"\"\n", + "query_result = aql.execute(sort_nombre)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Zy2cLxhIGbsx", + "outputId": "81f04036-318d-439b-d503-b8f2616ceaba" + }, + "execution_count": 62, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'_key': '266302775454', '_id': 'Personajes/266302775454', '_rev': '_edBIuVu--P', 'nombre': 'Ygritte', 'vivo': True, 'caracteres': ['A', 'P', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775450', '_id': 'Personajes/266302775450', '_rev': '_edBIuVu--L', 'nombre': 'Varys', 'vivo': True, 'caracteres': ['M', 'F', 'N', 'E'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775442', '_id': 'Personajes/266302775442', '_rev': '_edBIuVu--D', 'nombre': 'Tywin', 'apellido': 'Lannister', 'vivo': True, 'caracteres': ['O', 'M', 'H', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775440', '_id': 'Personajes/266302775440', '_rev': '_edBIuVu--B', 'nombre': 'Tyrion', 'apellido': 'Lannister', 'vivo': True, 'edad': 32, 'caracteres': ['F', 'K', 'M', 'N'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775455', '_id': 'Personajes/266302775455', '_rev': '_edBIuVu--Q', 'nombre': 'Tormund', 'apellido': 'Giantsbane', 'vivo': True, 'caracteres': ['C', 'P', 'A', 'I'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775462', '_id': 'Personajes/266302775462', '_rev': '_edBIuVu--X', 'nombre': 'Tommen', 'apellido': 'Baratheon', 'vivo': True, 'caracteres': ['I', 'L', 'B'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775436', '_id': 'Personajes/266302775436', '_rev': '_edBIuVq--K', 'nombre': 'Theon', 'apellido': 'Greyjoy', 'vivo': True, 'edad': 16, 'caracteres': ['E', 'R', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775465', '_id': 'Personajes/266302775465', '_rev': '_edBIuVu--a', 'nombre': 'The High Sparrow', 'vivo': True, 'caracteres': ['H', 'M', 'F', 'O'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775452', '_id': 'Personajes/266302775452', '_rev': '_edBIuVu--N', 'nombre': 'Talisa', 'apellido': 'Maegyr', 'vivo': True, 'caracteres': ['D', 'C', 'B'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775445', '_id': 'Personajes/266302775445', '_rev': '_edBIuVu--G', 'nombre': 'Stannis', 'apellido': 'Baratheon', 'vivo': True, 'caracteres': ['H', 'O', 'P', 'M'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775451', '_id': 'Personajes/266302775451', '_rev': '_edBIuVu--M', 'nombre': 'Shae', 'vivo': True, 'caracteres': ['M', 'D', 'G'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775433', '_id': 'Personajes/266302775433', '_rev': '_edBIuVq--H', 'nombre': 'Sara', 'apellido': 'Rojas', 'vivo': True, 'edad': 13, 'caracteres': ['D', 'I', 'J'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775439', '_id': 'Personajes/266302775439', '_rev': '_edBIuVu--A', 'nombre': 'Sandor', 'apellido': 'Clegane', 'vivo': True, 'caracteres': ['A', 'P', 'K', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775444', '_id': 'Personajes/266302775444', '_rev': '_edBIuVu--F', 'nombre': 'Samwell', 'apellido': 'Tarly', 'vivo': True, 'edad': 17, 'caracteres': ['C', 'L', 'I'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775464', '_id': 'Personajes/266302775464', '_rev': '_edBIuVu--Z', 'nombre': 'Roose', 'apellido': 'Bolton', 'vivo': True, 'caracteres': ['H', 'E', 'F', 'A'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775435', '_id': 'Personajes/266302775435', '_rev': '_edBIuVq--J', 'nombre': 'Roberto', 'apellido': 'Cabezas', 'vivo': True, 'caracteres': ['A', 'B', 'C', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775424', '_id': 'Personajes/266302775424', '_rev': '_edBIuVq---', 'nombre': 'Roberto', 'apellido': 'Ramirez', 'vivo': True, 'caracteres': ['A', 'H', 'C'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775458', '_id': 'Personajes/266302775458', '_rev': '_edBIuVu--T', 'nombre': 'Ramsay', 'apellido': 'Bolton', 'vivo': True, 'caracteres': ['E', 'O', 'G', 'A'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775430', '_id': 'Personajes/266302775430', '_rev': '_edBIuVq--E', 'nombre': 'Pedro', 'apellido': 'Baesa', 'vivo': True, 'caracteres': ['E', 'G', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775461', '_id': 'Personajes/266302775461', '_rev': '_edBIuVu--W', 'nombre': 'Missandei', 'vivo': True, 'caracteres': ['D', 'L', 'C', 'M'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775446', '_id': 'Personajes/266302775446', '_rev': '_edBIuVu--H', 'nombre': 'Melisandre', 'vivo': True, 'caracteres': ['G', 'E', 'H'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775447', '_id': 'Personajes/266302775447', '_rev': '_edBIuVu--I', 'nombre': 'Margaery', 'apellido': 'Tyrell', 'vivo': True, 'caracteres': ['M', 'D', 'B'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775441', '_id': 'Personajes/266302775441', '_rev': '_edBIuVu--C', 'nombre': 'Khal', 'apellido': 'Drogo', 'vivo': True, 'caracteres': ['A', 'C', 'O', 'P'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775432', '_id': 'Personajes/266302775432', '_rev': '_edBIuVq--G', 'nombre': 'Juan', 'apellido': 'Niebla', 'vivo': True, 'edad': 16, 'caracteres': ['A', 'B', 'C', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775429', '_id': 'Personajes/266302775429', '_rev': '_edBIuVq--D', 'nombre': 'Jose', 'apellido': 'Mora', 'vivo': True, 'caracteres': ['A', 'B', 'C', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775438', '_id': 'Personajes/266302775438', '_rev': '_edBIuVu--_', 'nombre': 'Joffrey', 'apellido': 'Baratheon', 'vivo': True, 'edad': 19, 'caracteres': ['I', 'L', 'O'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775448', '_id': 'Personajes/266302775448', '_rev': '_edBIuVu--J', 'nombre': 'Jeor', 'apellido': 'Mormont', 'vivo': True, 'caracteres': ['C', 'H', 'M', 'P'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775463', '_id': 'Personajes/266302775463', '_rev': '_edBIuVu--Y', 'nombre': 'Jaqen', 'apellido': \"H'ghar\", 'vivo': True, 'caracteres': ['H', 'F', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775425', '_id': 'Personajes/266302775425', '_rev': '_edBIuVq--_', 'nombre': 'Jaime', 'apellido': 'Quinteros', 'vivo': True, 'edad': 36, 'caracteres': ['A', 'F', 'B'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775431', '_id': 'Personajes/266302775431', '_rev': '_edBIuVq--F', 'nombre': 'Guillermo', 'apellido': 'Toro', 'vivo': True, 'caracteres': ['O', 'L', 'N'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775456', '_id': 'Personajes/266302775456', '_rev': '_edBIuVu--R', 'nombre': 'Gilly', 'vivo': True, 'caracteres': ['L', 'J'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775453', '_id': 'Personajes/266302775453', '_rev': '_edBIuVu--O', 'nombre': 'Gendry', 'vivo': True, 'caracteres': ['K', 'C', 'A'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775459', '_id': 'Personajes/266302775459', '_rev': '_edBIuVu--U', 'nombre': 'Ellaria', 'apellido': 'Sand', 'vivo': True, 'caracteres': ['P', 'O', 'A', 'E'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775443', '_id': 'Personajes/266302775443', '_rev': '_edBIuVu--E', 'nombre': 'Davos', 'apellido': 'Seaworth', 'vivo': True, 'edad': 49, 'caracteres': ['C', 'K', 'P', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775428', '_id': 'Personajes/266302775428', '_rev': '_edBIuVq--C', 'nombre': 'David', 'apellido': 'Tardon', 'vivo': True, 'edad': 16, 'caracteres': ['D', 'H', 'C'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775460', '_id': 'Personajes/266302775460', '_rev': '_edBIuVu--V', 'nombre': 'Daario', 'apellido': 'Naharis', 'vivo': True, 'caracteres': ['K', 'P', 'A'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775427', '_id': 'Personajes/266302775427', '_rev': '_edBIuVq--B', 'nombre': 'Cesar', 'apellido': 'Lanaro', 'vivo': True, 'edad': 36, 'caracteres': ['H', 'E', 'F'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775426', '_id': 'Personajes/266302775426', '_rev': '_edBIuVq--A', 'nombre': 'Catalina', 'apellido': 'rojas', 'vivo': True, 'edad': 40, 'caracteres': ['D', 'H', 'C'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775449', '_id': 'Personajes/266302775449', '_rev': '_edBIuVu--K', 'nombre': 'Bronn', 'vivo': True, 'caracteres': ['K', 'E', 'C'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775457', '_id': 'Personajes/266302775457', '_rev': '_edBIuVu--S', 'nombre': 'Brienne', 'apellido': 'Tarth', 'vivo': True, 'edad': 32, 'caracteres': ['P', 'C', 'A', 'K'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775437', '_id': 'Personajes/266302775437', '_rev': '_edBIuVu---', 'nombre': 'Bran', 'apellido': 'Stark', 'vivo': True, 'edad': 10, 'caracteres': ['L', 'J'], 'equipo': 'Colo Colo'}\n", + "{'_key': '266302775434', '_id': 'Personajes/266302775434', '_rev': '_edBIuVq--I', 'nombre': 'Ariela', 'apellido': 'Araya', 'vivo': True, 'edad': 11, 'caracteres': ['C', 'K', 'L'], 'equipo': 'Colo Colo'}\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "sort_nombre = \"\"\"\n", + "FOR c IN Personajes\n", + " SORT c.nombre \n", + " LIMIT 10\n", + " RETURN c.nombre\n", + "\"\"\"\n", + "\n", + "query_result = aql.execute(sort_nombre)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "g87HHeWRGpEh", + "outputId": "d635cbbc-bdfe-4610-bba2-e4daaf06157f" + }, + "execution_count": 65, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Ariela\n", + "Bran\n", + "Brienne\n", + "Bronn\n", + "Catalina\n", + "Cesar\n", + "Daario\n", + "David\n", + "Davos\n", + "Ellaria\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "pyAr_db.createCollection(name=\"caracteres\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "b5mvwkJmHXOG", + "outputId": "cda4b43f-0d60-4373-d2d9-e1519ea61104" + }, + "execution_count": 67, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "ArangoDB collection name: caracteres, id: 4165857923, type: document, status: loaded" + ] + }, + "metadata": {}, + "execution_count": 67 + } + ] + }, + { + "cell_type": "code", + "source": [ + "insert_query = \"\"\"\n", + "LET data = [\n", + " { \"_key\": \"A\", \"en\": \"strong\", \"es\": \"fuerte\" },\n", + " { \"_key\": \"B\", \"en\": \"polite\", \"es\": \"polite\" },\n", + " { \"_key\": \"C\", \"en\": \"loyal\", \"es\": \"leal\" },\n", + " { \"_key\": \"D\", \"en\": \"beautiful\", \"es\": \"bonito\" },\n", + " { \"_key\": \"E\", \"en\": \"sneaky\", \"es\": \"insidioso\" },\n", + " { \"_key\": \"F\", \"en\": \"experienced\", \"es\": \"experimentado\" },\n", + " { \"_key\": \"G\", \"en\": \"corrupt\", \"es\": \"corrupto\" },\n", + " { \"_key\": \"H\", \"en\": \"powerful\", \"es\": \"potente\" },\n", + " { \"_key\": \"I\", \"en\": \"naive\", \"es\": \"ingenuo\" },\n", + " { \"_key\": \"J\", \"en\": \"unmarried\", \"es\": \"soltero\" },\n", + " { \"_key\": \"K\", \"en\": \"skillful\", \"es\": \"habil\" },\n", + " { \"_key\": \"L\", \"en\": \"young\", \"es\": \"joven\" },\n", + " { \"_key\": \"M\", \"en\": \"smart\", \"es\": \"inteligente\" },\n", + " { \"_key\": \"N\", \"en\": \"rational\", \"es\": \"racional\" },\n", + " { \"_key\": \"O\", \"en\": \"ruthless\", \"es\": \"implacable\" },\n", + " { \"_key\": \"P\", \"en\": \"brave\", \"es\": \"valiente\" },\n", + " { \"_key\": \"Q\", \"en\": \"mighty\", \"es\": \"poderoso\" },\n", + " { \"_key\": \"R\", \"en\": \"weak\", \"es\": \"debil\" }\n", + "]\n", + " \n", + "\n", + "FOR d IN data\n", + " INSERT d INTO caracteres\n", + "\"\"\"\n", + "# python-arango\n", + "aql.execute(insert_query)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OLooK3wNHsgn", + "outputId": "3e066470-1db6-4240-9420-7de9f15f20bd" + }, + "execution_count": 70, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 70 + } + ] + }, + { + "cell_type": "code", + "source": [ + "listar_todos = \"\"\"\n", + "FOR c IN caracteres\n", + " RETURN c\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(listar_todos)\n", + "\n", + "# pyArango\n", + "# query_result = db.AQLQuery(all_characters_names, rawResults=True)\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xEvdcdRBI6L_", + "outputId": "c8a9723e-189b-4af9-fd67-486df8344ba0" + }, + "execution_count": 71, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'_key': 'A', '_id': 'caracteres/A', '_rev': '_edCieX----', 'en': 'strong', 'es': 'fuerte'}\n", + "{'_key': 'B', '_id': 'caracteres/B', '_rev': '_edCieX---_', 'en': 'polite', 'es': 'polite'}\n", + "{'_key': 'C', '_id': 'caracteres/C', '_rev': '_edCieX---A', 'en': 'loyal', 'es': 'leal'}\n", + "{'_key': 'D', '_id': 'caracteres/D', '_rev': '_edCieX---B', 'en': 'beautiful', 'es': 'bonito'}\n", + "{'_key': 'E', '_id': 'caracteres/E', '_rev': '_edCieX---C', 'en': 'sneaky', 'es': 'insidioso'}\n", + "{'_key': 'F', '_id': 'caracteres/F', '_rev': '_edCieX---D', 'en': 'experienced', 'es': 'experimentado'}\n", + "{'_key': 'G', '_id': 'caracteres/G', '_rev': '_edCieX---E', 'en': 'corrupt', 'es': 'corrupto'}\n", + "{'_key': 'H', '_id': 'caracteres/H', '_rev': '_edCieX---F', 'en': 'powerful', 'es': 'potente'}\n", + "{'_key': 'I', '_id': 'caracteres/I', '_rev': '_edCieX---G', 'en': 'naive', 'es': 'ingenuo'}\n", + "{'_key': 'J', '_id': 'caracteres/J', '_rev': '_edCieX---H', 'en': 'unmarried', 'es': 'soltero'}\n", + "{'_key': 'K', '_id': 'caracteres/K', '_rev': '_edCieX---I', 'en': 'skillful', 'es': 'habil'}\n", + "{'_key': 'L', '_id': 'caracteres/L', '_rev': '_edCieX---J', 'en': 'young', 'es': 'joven'}\n", + "{'_key': 'M', '_id': 'caracteres/M', '_rev': '_edCieX---K', 'en': 'smart', 'es': 'inteligente'}\n", + "{'_key': 'N', '_id': 'caracteres/N', '_rev': '_edCieX---L', 'en': 'rational', 'es': 'racional'}\n", + "{'_key': 'O', '_id': 'caracteres/O', '_rev': '_edCieX---M', 'en': 'ruthless', 'es': 'implacable'}\n", + "{'_key': 'P', '_id': 'caracteres/P', '_rev': '_edCieX---N', 'en': 'brave', 'es': 'valiente'}\n", + "{'_key': 'Q', '_id': 'caracteres/Q', '_rev': '_edCieX---O', 'en': 'mighty', 'es': 'poderoso'}\n", + "{'_key': 'R', '_id': 'caracteres/R', '_rev': '_edCieX---P', 'en': 'weak', 'es': 'debil'}\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "listar_personajes_caracteres = \"\"\"\n", + "FOR c IN Personajes\n", + " RETURN {nombre:c.nombre, caracteres:c.caracteres}\n", + "\"\"\"\n", + "query_result = aql.execute(listar_personajes_caracteres)\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dPxFXS5vJWBL", + "outputId": "40eec4c7-20fa-41a9-c3ad-81a11e365391" + }, + "execution_count": 74, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'nombre': 'Roberto', 'caracteres': ['A', 'H', 'C']}\n", + "{'nombre': 'Jaime', 'caracteres': ['A', 'F', 'B']}\n", + "{'nombre': 'Catalina', 'caracteres': ['D', 'H', 'C']}\n", + "{'nombre': 'Cesar', 'caracteres': ['H', 'E', 'F']}\n", + "{'nombre': 'David', 'caracteres': ['D', 'H', 'C']}\n", + "{'nombre': 'Jose', 'caracteres': ['A', 'B', 'C', 'F']}\n", + "{'nombre': 'Pedro', 'caracteres': ['E', 'G', 'F']}\n", + "{'nombre': 'Guillermo', 'caracteres': ['O', 'L', 'N']}\n", + "{'nombre': 'Juan', 'caracteres': ['A', 'B', 'C', 'F']}\n", + "{'nombre': 'Sara', 'caracteres': ['D', 'I', 'J']}\n", + "{'nombre': 'Ariela', 'caracteres': ['C', 'K', 'L']}\n", + "{'nombre': 'Roberto', 'caracteres': ['A', 'B', 'C', 'K']}\n", + "{'nombre': 'Theon', 'caracteres': ['E', 'R', 'K']}\n", + "{'nombre': 'Bran', 'caracteres': ['L', 'J']}\n", + "{'nombre': 'Joffrey', 'caracteres': ['I', 'L', 'O']}\n", + "{'nombre': 'Sandor', 'caracteres': ['A', 'P', 'K', 'F']}\n", + "{'nombre': 'Tyrion', 'caracteres': ['F', 'K', 'M', 'N']}\n", + "{'nombre': 'Khal', 'caracteres': ['A', 'C', 'O', 'P']}\n", + "{'nombre': 'Tywin', 'caracteres': ['O', 'M', 'H', 'F']}\n", + "{'nombre': 'Davos', 'caracteres': ['C', 'K', 'P', 'F']}\n", + "{'nombre': 'Samwell', 'caracteres': ['C', 'L', 'I']}\n", + "{'nombre': 'Stannis', 'caracteres': ['H', 'O', 'P', 'M']}\n", + "{'nombre': 'Melisandre', 'caracteres': ['G', 'E', 'H']}\n", + "{'nombre': 'Margaery', 'caracteres': ['M', 'D', 'B']}\n", + "{'nombre': 'Jeor', 'caracteres': ['C', 'H', 'M', 'P']}\n", + "{'nombre': 'Bronn', 'caracteres': ['K', 'E', 'C']}\n", + "{'nombre': 'Varys', 'caracteres': ['M', 'F', 'N', 'E']}\n", + "{'nombre': 'Shae', 'caracteres': ['M', 'D', 'G']}\n", + "{'nombre': 'Talisa', 'caracteres': ['D', 'C', 'B']}\n", + "{'nombre': 'Gendry', 'caracteres': ['K', 'C', 'A']}\n", + "{'nombre': 'Ygritte', 'caracteres': ['A', 'P', 'K']}\n", + "{'nombre': 'Tormund', 'caracteres': ['C', 'P', 'A', 'I']}\n", + "{'nombre': 'Gilly', 'caracteres': ['L', 'J']}\n", + "{'nombre': 'Brienne', 'caracteres': ['P', 'C', 'A', 'K']}\n", + "{'nombre': 'Ramsay', 'caracteres': ['E', 'O', 'G', 'A']}\n", + "{'nombre': 'Ellaria', 'caracteres': ['P', 'O', 'A', 'E']}\n", + "{'nombre': 'Daario', 'caracteres': ['K', 'P', 'A']}\n", + "{'nombre': 'Missandei', 'caracteres': ['D', 'L', 'C', 'M']}\n", + "{'nombre': 'Tommen', 'caracteres': ['I', 'L', 'B']}\n", + "{'nombre': 'Jaqen', 'caracteres': ['H', 'F', 'K']}\n", + "{'nombre': 'Roose', 'caracteres': ['H', 'E', 'F', 'A']}\n", + "{'nombre': 'The High Sparrow', 'caracteres': ['H', 'M', 'F', 'O']}\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Ejemplos Joins" + ], + "metadata": { + "id": "YLY5fz58J85c" + } + }, + { + "cell_type": "code", + "source": [ + "#La función DOCUMENT() se puede utilizar para buscar uno o varios documentos a través de identificadores de documentos.\n", + "listar_personajes_caracteres = \"\"\"\n", + "FOR c IN Personajes\n", + " LIMIT 5\n", + " RETURN {nombre:c.nombre, caracteres:DOCUMENT(\"caracteres\", c.caracteres)}\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(listar_personajes_caracteres)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aDm7aGkuKEpy", + "outputId": "569f63d1-6b72-49a7-9a88-575f851c9d42" + }, + "execution_count": 78, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'nombre': 'Roberto', 'caracteres': [{'_key': 'A', '_id': 'caracteres/A', '_rev': '_edCieX----', 'en': 'strong', 'es': 'fuerte'}, {'_key': 'H', '_id': 'caracteres/H', '_rev': '_edCieX---F', 'en': 'powerful', 'es': 'potente'}, {'_key': 'C', '_id': 'caracteres/C', '_rev': '_edCieX---A', 'en': 'loyal', 'es': 'leal'}]}\n", + "{'nombre': 'Jaime', 'caracteres': [{'_key': 'A', '_id': 'caracteres/A', '_rev': '_edCieX----', 'en': 'strong', 'es': 'fuerte'}, {'_key': 'F', '_id': 'caracteres/F', '_rev': '_edCieX---D', 'en': 'experienced', 'es': 'experimentado'}, {'_key': 'B', '_id': 'caracteres/B', '_rev': '_edCieX---_', 'en': 'polite', 'es': 'polite'}]}\n", + "{'nombre': 'Catalina', 'caracteres': [{'_key': 'D', '_id': 'caracteres/D', '_rev': '_edCieX---B', 'en': 'beautiful', 'es': 'bonito'}, {'_key': 'H', '_id': 'caracteres/H', '_rev': '_edCieX---F', 'en': 'powerful', 'es': 'potente'}, {'_key': 'C', '_id': 'caracteres/C', '_rev': '_edCieX---A', 'en': 'loyal', 'es': 'leal'}]}\n", + "{'nombre': 'Cesar', 'caracteres': [{'_key': 'H', '_id': 'caracteres/H', '_rev': '_edCieX---F', 'en': 'powerful', 'es': 'potente'}, {'_key': 'E', '_id': 'caracteres/E', '_rev': '_edCieX---C', 'en': 'sneaky', 'es': 'insidioso'}, {'_key': 'F', '_id': 'caracteres/F', '_rev': '_edCieX---D', 'en': 'experienced', 'es': 'experimentado'}]}\n", + "{'nombre': 'David', 'caracteres': [{'_key': 'D', '_id': 'caracteres/D', '_rev': '_edCieX---B', 'en': 'beautiful', 'es': 'bonito'}, {'_key': 'H', '_id': 'caracteres/H', '_rev': '_edCieX---F', 'en': 'powerful', 'es': 'potente'}, {'_key': 'C', '_id': 'caracteres/C', '_rev': '_edCieX---A', 'en': 'loyal', 'es': 'leal'}]}\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "listar_personajes_caracteres = \"\"\"\n", + "FOR c IN Personajes\n", + " LIMIT 5\n", + " RETURN {nombre:c.nombre, caracteres:DOCUMENT(\"caracteres\", c.caracteres)[*].es}\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(listar_personajes_caracteres)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9PkQowF0K7g8", + "outputId": "d29fccdb-f99b-4c59-e5c9-e60729cd1b26" + }, + "execution_count": 79, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'nombre': 'Roberto', 'caracteres': ['fuerte', 'potente', 'leal']}\n", + "{'nombre': 'Jaime', 'caracteres': ['fuerte', 'experimentado', 'polite']}\n", + "{'nombre': 'Catalina', 'caracteres': ['bonito', 'potente', 'leal']}\n", + "{'nombre': 'Cesar', 'caracteres': ['potente', 'insidioso', 'experimentado']}\n", + "{'nombre': 'David', 'caracteres': ['bonito', 'potente', 'leal']}\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L2moBhHpd50w" + }, + "source": [ + "* https://www.arangodb.com/docs/stable/aql/tutorial.html" + ] + }, + { + "cell_type": "code", + "source": [ + "listar_personajes_caracteres = \"\"\"\n", + "FOR c IN Personajes\n", + " LIMIT 5\n", + " RETURN {nombre:c.nombre, caracteres:DOCUMENT(\"caracteres\", c.caracteres)[*].en}\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(listar_personajes_caracteres)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wJclUuX-LEbi", + "outputId": "04122c56-b7de-42de-c994-04cc7e7befab" + }, + "execution_count": 80, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'nombre': 'Roberto', 'caracteres': ['strong', 'powerful', 'loyal']}\n", + "{'nombre': 'Jaime', 'caracteres': ['strong', 'experienced', 'polite']}\n", + "{'nombre': 'Catalina', 'caracteres': ['beautiful', 'powerful', 'loyal']}\n", + "{'nombre': 'Cesar', 'caracteres': ['powerful', 'sneaky', 'experienced']}\n", + "{'nombre': 'David', 'caracteres': ['beautiful', 'powerful', 'loyal']}\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "todos_personajes_caracter = \"\"\"\n", + "FOR c IN Personajes\n", + " LIMIT 5\n", + " RETURN MERGE(c, { caracter: DOCUMENT(\"caracteres\", c.caracteres)[*].es } )\n", + "\"\"\"\n", + "query_result = aql.execute(todos_personajes_caracter)\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Uh0v8kiQLtWc", + "outputId": "d62add45-e33d-4817-8173-13a5eb135f43" + }, + "execution_count": 84, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'_id': 'Personajes/266302775424', '_key': '266302775424', '_rev': '_edBIuVq---', 'apellido': 'Ramirez', 'caracteres': ['A', 'H', 'C'], 'equipo': 'Colo Colo', 'nombre': 'Roberto', 'vivo': True, 'caracter': ['fuerte', 'potente', 'leal']}\n", + "{'_id': 'Personajes/266302775425', '_key': '266302775425', '_rev': '_edBIuVq--_', 'apellido': 'Quinteros', 'caracteres': ['A', 'F', 'B'], 'edad': 36, 'equipo': 'Colo Colo', 'nombre': 'Jaime', 'vivo': True, 'caracter': ['fuerte', 'experimentado', 'polite']}\n", + "{'_id': 'Personajes/266302775426', '_key': '266302775426', '_rev': '_edBIuVq--A', 'apellido': 'rojas', 'caracteres': ['D', 'H', 'C'], 'edad': 40, 'equipo': 'Colo Colo', 'nombre': 'Catalina', 'vivo': True, 'caracter': ['bonito', 'potente', 'leal']}\n", + "{'_id': 'Personajes/266302775427', '_key': '266302775427', '_rev': '_edBIuVq--B', 'apellido': 'Lanaro', 'caracteres': ['H', 'E', 'F'], 'edad': 36, 'equipo': 'Colo Colo', 'nombre': 'Cesar', 'vivo': True, 'caracter': ['potente', 'insidioso', 'experimentado']}\n", + "{'_id': 'Personajes/266302775428', '_key': '266302775428', '_rev': '_edBIuVq--C', 'apellido': 'Tardon', 'caracteres': ['D', 'H', 'C'], 'edad': 16, 'equipo': 'Colo Colo', 'nombre': 'David', 'vivo': True, 'caracter': ['bonito', 'potente', 'leal']}\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "all_characters_traits = \"\"\"\n", + "FOR c IN Personajes\n", + " LIMIT 10\n", + " SORT c.apellido \n", + " RETURN MERGE(c, {\n", + " caracter: (\n", + " FOR key IN c.caracteres\n", + " FOR t IN caracteres\n", + " FILTER t._key == key\n", + " RETURN t.es\n", + " )\n", + " })\n", + "\"\"\"\n", + "# python-arango\n", + "query_result = aql.execute(all_characters_traits)\n", + "\n", + "for doc in query_result:\n", + " print(doc)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GswcZgCzMLR5", + "outputId": "5c127de8-488b-454a-a89e-0417536bf8d6" + }, + "execution_count": 89, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "{'_id': 'Personajes/266302775430', '_key': '266302775430', '_rev': '_edBIuVq--E', 'apellido': 'Baesa', 'caracteres': ['E', 'G', 'F'], 'equipo': 'Colo Colo', 'nombre': 'Pedro', 'vivo': True, 'caracter': ['insidioso', 'corrupto', 'experimentado']}\n", + "{'_id': 'Personajes/266302775427', '_key': '266302775427', '_rev': '_edBIuVq--B', 'apellido': 'Lanaro', 'caracteres': ['H', 'E', 'F'], 'edad': 36, 'equipo': 'Colo Colo', 'nombre': 'Cesar', 'vivo': True, 'caracter': ['potente', 'insidioso', 'experimentado']}\n", + "{'_id': 'Personajes/266302775429', '_key': '266302775429', '_rev': '_edBIuVq--D', 'apellido': 'Mora', 'caracteres': ['A', 'B', 'C', 'F'], 'equipo': 'Colo Colo', 'nombre': 'Jose', 'vivo': True, 'caracter': ['fuerte', 'polite', 'leal', 'experimentado']}\n", + "{'_id': 'Personajes/266302775432', '_key': '266302775432', '_rev': '_edBIuVq--G', 'apellido': 'Niebla', 'caracteres': ['A', 'B', 'C', 'F'], 'edad': 16, 'equipo': 'Colo Colo', 'nombre': 'Juan', 'vivo': True, 'caracter': ['fuerte', 'polite', 'leal', 'experimentado']}\n", + "{'_id': 'Personajes/266302775425', '_key': '266302775425', '_rev': '_edBIuVq--_', 'apellido': 'Quinteros', 'caracteres': ['A', 'F', 'B'], 'edad': 36, 'equipo': 'Colo Colo', 'nombre': 'Jaime', 'vivo': True, 'caracter': ['fuerte', 'experimentado', 'polite']}\n", + "{'_id': 'Personajes/266302775424', '_key': '266302775424', '_rev': '_edBIuVq---', 'apellido': 'Ramirez', 'caracteres': ['A', 'H', 'C'], 'equipo': 'Colo Colo', 'nombre': 'Roberto', 'vivo': True, 'caracter': ['fuerte', 'potente', 'leal']}\n", + "{'_id': 'Personajes/266302775433', '_key': '266302775433', '_rev': '_edBIuVq--H', 'apellido': 'Rojas', 'caracteres': ['D', 'I', 'J'], 'edad': 13, 'equipo': 'Colo Colo', 'nombre': 'Sara', 'vivo': True, 'caracter': ['bonito', 'ingenuo', 'soltero']}\n", + "{'_id': 'Personajes/266302775426', '_key': '266302775426', '_rev': '_edBIuVq--A', 'apellido': 'rojas', 'caracteres': ['D', 'H', 'C'], 'edad': 40, 'equipo': 'Colo Colo', 'nombre': 'Catalina', 'vivo': True, 'caracter': ['bonito', 'potente', 'leal']}\n", + "{'_id': 'Personajes/266302775428', '_key': '266302775428', '_rev': '_edBIuVq--C', 'apellido': 'Tardon', 'caracteres': ['D', 'H', 'C'], 'edad': 16, 'equipo': 'Colo Colo', 'nombre': 'David', 'vivo': True, 'caracter': ['bonito', 'potente', 'leal']}\n", + "{'_id': 'Personajes/266302775431', '_key': '266302775431', '_rev': '_edBIuVq--F', 'apellido': 'Toro', 'caracteres': ['O', 'L', 'N'], 'equipo': 'Colo Colo', 'nombre': 'Guillermo', 'vivo': True, 'caracter': ['implacable', 'joven', 'racional']}\n" + ] + } + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + }, + "colab": { + "name": "NoSQL_ArangoDB_ejemplo.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "gpuClass": "standard" + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file