ArangoDB - Operazioni Crud

In questo capitolo impareremo le diverse operazioni con Arangosh.

Di seguito sono riportate le possibili operazioni con Arangosh:

  • Creazione di una raccolta di documenti
  • Creazione di documenti
  • Lettura di documenti
  • Aggiornamento dei documenti

Cominciamo creando un nuovo database. Useremo la seguente riga di codice per creare un nuovo database:

127.0.0.1:[email protected]_system> db._createDatabase("song_collection")
true

La seguente riga di codice ti aiuterà a passare al nuovo database:

127.0.0.1:[email protected]_system> db._useDatabase("song_collection")
true

Il messaggio passerà a "@@ song_collection"

127.0.0.1:[email protected]_collection>

Da qui studieremo le operazioni CRUD. Creiamo una collezione nel nuovo database -

127.0.0.1:[email protected]_collection> db._createDocumentCollection('songs')

Produzione

[ArangoCollection 4890, "songs" (type document, status loaded)]
127.0.0.1:[email protected]_collection>

Aggiungiamo alcuni documenti (oggetti JSON) alla nostra raccolta di "canzoni".

Aggiungiamo il primo documento nel modo seguente:

127.0.0.1:[email protected]_collection> db.songs.save({title: "A Man's Best Friend",
lyricist: "Johnny Mercer", composer: "Johnny Mercer", Year: 1950, _key:
"A_Man"})

Produzione

{
   "_id" : "songs/A_Man",
   "_key" : "A_Man",
   "_rev" : "_VjVClbW---"
}

Aggiungiamo altri documenti al database. Questo ci aiuterà ad apprendere il processo di interrogazione dei dati. Puoi copiare questi codici e incollare lo stesso in Arangosh per emulare il processo -

127.0.0.1:[email protected]_collection> db.songs.save(
   {
      title: "Accentchuate The Politics", 
      lyricist: "Johnny Mercer", 
      composer: "Harold Arlen", Year: 1944,
      _key: "Accentchuate_The"
   }
)

{
   "_id" : "songs/Accentchuate_The",
   "_key" : "Accentchuate_The",
   "_rev" : "_VjVDnzO---"
}

127.0.0.1:[email protected]_collection> db.songs.save(
   {
      title: "Affable Balding Me", 
      lyricist: "Johnny Mercer", 
      composer: "Robert Emmett Dolan", 
      Year: 1950,
      _key: "Affable_Balding"
   }
)
{
   "_id" : "songs/Affable_Balding",
   "_key" : "Affable_Balding",
   "_rev" : "_VjVEFMm---"
}

Come leggere i documenti

Il _keyoppure l'handle del documento può essere utilizzato per recuperare un documento. Utilizzare l'handle del documento se non è necessario attraversare la raccolta stessa. Se hai una collezione, la funzione documento è facile da usare:

127.0.0.1:[email protected]_collection> db.songs.document("A_Man");
{
   "_key" : "A_Man",
   "_id" : "songs/A_Man",
   "_rev" : "_VjVClbW---",
   "title" : "A Man's Best Friend",
   "lyricist" : "Johnny Mercer",
   "composer" : "Johnny Mercer",
   "Year" : 1950
}

Come aggiornare i documenti

Sono disponibili due opzioni per aggiornare i dati salvati: replace e update.

La funzione di aggiornamento patcha un documento, fondendolo con gli attributi dati. D'altra parte, la funzione di sostituzione sostituirà il documento precedente con uno nuovo. La sostituzione avverrà comunque anche se vengono forniti attributi completamente diversi. Per prima cosa osserveremo un aggiornamento non distruttivo, aggiornando l'attributo Production` in una canzone -

127.0.0.1:[email protected]_collection> db.songs.update("songs/A_Man",{production:
"Top Banana"});

Produzione

{
   "_id" : "songs/A_Man",
   "_key" : "A_Man",
   "_rev" : "_VjVOcqe---",
   "_oldRev" : "_VjVClbW---"
}

Leggiamo ora gli attributi della canzone aggiornata -

127.0.0.1:[email protected]_collection> db.songs.document('A_Man');

Produzione

{
   "_key" : "A_Man",
   "_id" : "songs/A_Man",
   "_rev" : "_VjVOcqe---",
   "title" : "A Man's Best Friend",
   "lyricist" : "Johnny Mercer",
   "composer" : "Johnny Mercer",
   "Year" : 1950,
   "production" : "Top Banana"
}

Un documento di grandi dimensioni può essere facilmente aggiornato con l'estensione update funzione, soprattutto quando gli attributi sono molto pochi.

Al contrario, il replace la funzione abolirà i tuoi dati quando li utilizzi con lo stesso documento.

127.0.0.1:[email protected]_collection> db.songs.replace("songs/A_Man",{production:
"Top Banana"});

Controlliamo ora la canzone che abbiamo appena aggiornato con la seguente riga di codice -

127.0.0.1:[email protected]_collection> db.songs.document('A_Man');

Produzione

{
   "_key" : "A_Man",
   "_id" : "songs/A_Man",
   "_rev" : "_VjVRhOq---",
   "production" : "Top Banana"
}

Ora puoi osservare che il documento non ha più i dati originali.

Come rimuovere i documenti

La funzione di rimozione viene utilizzata in combinazione con l'handle del documento per rimuovere un documento da una raccolta:

127.0.0.1:[email protected]_collection> db.songs.remove('A_Man');

Controlliamo ora gli attributi della canzone che abbiamo appena rimosso utilizzando la seguente riga di codice:

127.0.0.1:[email protected]_collection> db.songs.document('A_Man');

Otterremo un errore di eccezione come il seguente come output:

JavaScript exception in file
'/usr/share/arangodb3/js/client/modules/@arangodb/arangosh.js' at 97,7:
ArangoError 1202: document not found
! throw error;
! ^
stacktrace: ArangoError: document not found

at Object.exports.checkRequestResult
(/usr/share/arangodb3/js/client/modules/@arangodb/arangosh.js:95:21)

at ArangoCollection.document
(/usr/share/arangodb3/js/client/modules/@arangodb/arango-collection.js:667:12)
at <shell command>:1:10