Translate

10 Jan 2017

CONTOH AQL - ARANGO QUERY LANGUAGE


                       test di  ArangoDB V.3.1.7

#CATATAN PRIBADI











ADD USER
require("org/arangodb/users").save("sammy", "password");

INSERT
FOR ini IN [
  { name: "Isabela", gender: "m" },
  { name: "John Doe", gender: "m" , Alamat:"Cipaku"},
  { name: "Jane Smith", gender: "f" , No_hp:"081312651651"},
{ name: "Anu", gender: "f" }
]
  INSERT ini INTO Mahasiswa
INSERT WITH _key
INSERT {
    _key: "GilbertoGil",
    firstName: "Gilberto",
    name: "Gil",
    city: "Fortalezza"
} IN users

INSERT DARI TABEL LAIN
FOR u IN users
  INSERT u IN backupUser

//UPDATE
UPDATE "indonesia" WITH {
    negara: "INDONESIA RAYA"
} IN negara
Update… “indonesia” -> _key-nya
////
UPDATE "Key_nya" WITH {
    status: "active",
    location: "Beijing"
} IN users

//REMOVE
REMOVE "id_nya" IN users
or
REMOVE { _key: "key_nya" } IN users

REMOVE BERDASARKAN FILTER
FOR u IN users
  FILTER u.active == true && u.age >= 35 && u.age <= 37
  REMOVE u IN users


HITUNG RECORD
-          RETURN LENGTH(provinsi)
-          FOR doc IN kab
    COLLECT WITH COUNT INTO length
    RETURN length


//CONTOH PERULANGAN INSERT + KONDISI
FOR i IN 1..1000
  INSERT {
    id: 100000 + i,
    age: 18 + FLOOR(RAND() * 25),
    name: CONCAT('test', TO_STRING(i)),
    active: false,
    gender: i % 2 == 0 ? 'male' : 'female'
  } IN users

//
FOR i IN 1..1000
  INSERT {
    nama: CONCAT("namanya", i),
    jenis_kelamin: (i % 2 == 0 ? "Laki-laki" : "Perempuan")
  }
  INTO Mahasiswa

//CONTOH ADA KEY
  FOR i IN 1..1000
  INSERT {
    _key: CONCAT('prov_', i),
    namaProv: "provinsi"+i,
_from: CONCAT('prov_', i)
    walikota: "walikota"+i
  } INTO provinsi OPTIONS { ignoreErrors: true } // Abaikan Error

//CONTOH
FOR i IN 1..1000
  INSERT {
    name: CONCAT("test", i),
    gender: (i % 2 == 0 ? "f" : "m")
  }
  INTO users
 

SUB QUERY
FOR p IN persons
  COLLECT city = p.city INTO g
  RETURN {
    city : city,
    numPersons : LENGTH(g),
    maxRating: MAX(
      FOR r IN g
      RETURN r.p.rating
    )}

//Select semua collection Person
FOR u IN person RETURN u

FILTERING
FOR u IN users 
  LIMIT 0, 3
  RETURN u
//limit 3
FOR u IN users 
  LIMIT 0, 3
  RETURN { 
    "user" : { 
      "isActive" : u.active ? "yes" : "no", 
      "name" : u.name 
    } 
  }

//FILTER + Pake Sortir
 
FOR u IN users 
  FILTER u.active == true && u.age >= 30
  SORT u.age DESC
  LIMIT 0, 5
  RETURN { 
    "age" : u.age, 
    "name" : u.name 
  }

//SORTIR
FOR peg IN pegawai
  SORT u.nama DESC
  RETURN peg

//FILTER COLLECTION
FOR user IN Mahasiswa
FILTER user.name=="Isabela" or
user.name=="Dini"
  RETURN user

FOR user IN Mahasiswa
FILTER user.jenis_kelamin=="Laki-laki"
  RETURN user

//select berdaasar ID
FOR u IN person FILTER u._id == “id_nya” RETURN u
//Berdasarkan gender dan umur
FOR u IN users FILTER u.age > 19 && u.gender == 'm' RETURN u"
// cari data orang yg lebih dari Gender male && 30 (hasil true/false)
FOR u IN person SORT u.age RETURN
   { name : u.name, age:u.age, lebihdari : u.age > 30 }

//OPERTOR || ATAU
FOR u IN kenal
FILTER u._from=='person/135130' || u._from=='person/136632'
RETURN u

QUERY GRAPH
//yg keluar dari 136632
FOR v, e, p IN OUTBOUND 'person/136632' GRAPH 'GraphKu' RETURN p
//yg masuk ke 135158
FOR v, e, p IN INBOUND 'person/135158' GRAPH 'GraphKu' RETURN p
//yg masuk maupun keluar
FOR v, e, aa IN ANY 'person/135158' GRAPH 'GraphKu' RETURN aa
// memilih kaditu kadieu na pada Edges
For X IN kenal
FILTER X._from=="person/136632" || X._to=="person/135158" || X._from=="person/151243"
return X
for anu IN hub
FILTER anu._to=="provinsi/180084" || anu._to=="provinsi/180182"
return anu
                  
//FILTER INBOUND/OUTBOUND Berdasar id_Edges pada graph
for e,v, anu  IN 1..5 INBOUND 'negara/192174'  graph 'GraphHub'
FILTER anu.edges[0]._id=="hub/192223"
return anu

GROUPING
FOR u IN kab
    COLLECT namanya = u.nama
    RETURN namanya

// Fungsi Distinct
FOR u IN users
    RETURN DISTINCT u.age

//FILTER dan sortir
FOR u IN users
    FILTER u.active == true
    COLLECT age = u.age INTO usersByAge
    SORT age DESC LIMIT 0, 5
    RETURN {
        age,
        users: usersByAge[*].u.name
    }
//hasil di bawah
[
  { "age": 37, "users": [ "John", "Sophia" ] },
  { "age": 36, "users": [ "Fred", "Emma" ] },
  { "age": 34, "users": [ "Madison" ] },
  { "age": 33, "users": [ "Chloe", "Michael" ] },
  { "age": 32, "users": [ "Alexander" ] }
]

//AMBIL DATE
RETURN DATE_FORMAT(DATE_NOW(), "%dd/%MM/%yyyy")
// DAY OF WEEK
return DATE_DAYOFWEEK(DATE_NOW())
//AMBIL YEAR,DAY,MONTH,MINUTE,HOUR,SECOND,DAYOFYEAR
return DATE_YEAR(DATE_NOW())
//HITUNG JUMLAH HARI BULAN INI
return DATE_DAYS_IN_MONTH(DATE_NOW())

DURUNG NGERTI
WITH provinsi,negara
FOR v, e, p IN ANY 'negara/indonesia' GRAPH 'graphHub'
  RETURN { v, e, p }
FOR v, e, p IN 0..10 INBOUND "provinsi/prov_1" graph 'graphHubKab'

  RETURN CONCAT_SEPARATOR(" -> ", p.vertices[*].naon)

SUMBER : https://www.arangodb.com/why-arangodb/sql-aql-comparison/
docs.arangodb.com
Comments
0 Comments

Tidak ada komentar:

Posting Komentar