ArangoDB GO Driver - Example requests
conn , err := http .NewConnection (http.ConnectionConfig {
Endpoints : []string {"http://localhost:8529" },
TLSConfig : & tls.Config { /*...*/ },
})
if err != nil {
// Handle error
}
c , err := driver .NewClient (driver.ClientConfig {
Connection : conn ,
Authentication : driver .BasicAuthentication ("user" , "password" ),
})
if err != nil {
// Handle error
}
ctx := context .Background ()
db , err := client .Database (ctx , "myDB" )
if err != nil {
// handle error
}
ctx := context .Background ()
col , err := db .Collection (ctx , "myCollection" )
if err != nil {
// handle error
}
Checking if a collection exists
ctx := context .Background ()
found , err := db .CollectionExists (ctx , "myCollection" )
if err != nil {
// handle error
}
ctx := context .Background ()
options := & driver.CreateCollectionOptions { /* ... */ }
col , err := db .CreateCollection (ctx , "myCollection" , options )
if err != nil {
// handle error
}
Reading a document from a collection
var doc MyDocument
ctx := context .Background ()
meta , err := col .ReadDocument (ctx , myDocumentKey , & doc )
if err != nil {
// handle error
}
Reading a document from a collection with an explicit revision
var doc MyDocument
revCtx := driver .WithRevision (ctx , "mySpecificRevision" )
meta , err := col .ReadDocument (revCtx , myDocumentKey , & doc )
if err != nil {
// handle error
}
doc := MyDocument {
Name : "jan" ,
Counter : 23 ,
}
ctx := context .Background ()
meta , err := col .CreateDocument (ctx , doc )
if err != nil {
// handle error
}
fmt .Printf ("Created document with key '%s', revision '%s'\n " , meta .Key , meta .Rev )
ctx := context .Background ()
err := col .RemoveDocument (revCtx , myDocumentKey )
if err != nil {
// handle error
}
Removing a document with an explicit revision
revCtx := driver .WithRevision (ctx , "mySpecificRevision" )
err := col .RemoveDocument (revCtx , myDocumentKey )
if err != nil {
// handle error
}
ctx := context .Background ()
patch := map [string ]interface {}{
"Name" : "Frank" ,
}
meta , err := col .UpdateDocument (ctx , myDocumentKey , patch )
if err != nil {
// handle error
}
Querying documents, one document at a time
ctx := context .Background ()
query := "FOR d IN myCollection LIMIT 10 RETURN d"
cursor , err := db .Query (ctx , query , nil )
if err != nil {
// handle error
}
defer cursor .Close ()
for {
var doc MyDocument
meta , err := cursor .ReadDocument (ctx , & doc )
if driver .IsNoMoreDocuments (err ) {
break
} else if err != nil {
// handle other errors
}
fmt .Printf ("Got doc with key '%s' from query\n " , meta .Key )
}
Querying documents, fetching total count
ctx := driver .WithQueryCount (context .Background ())
query := "FOR d IN myCollection RETURN d"
cursor , err := db .Query (ctx , query , nil )
if err != nil {
// handle error
}
defer cursor .Close ()
fmt .Printf ("Query yields %d documents\n " , cursor .Count ())
Querying documents, with bind variables
ctx := context .Background ()
query := "FOR d IN myCollection FILTER d.Name == @name RETURN d"
bindVars := map [string ]interface {}{
"name" : "Some name" ,
}
cursor , err := db .Query (ctx , query , bindVars )
if err != nil {
// handle error
}
defer cursor .Close ()
...