ArangoDB - Operações cruas

Neste capítulo, aprenderemos as diferentes operações com a Arangosh.

A seguir estão as operações possíveis com a Arangosh -

  • Criando uma coleção de documentos
  • Criação de documentos
  • Lendo Documentos
  • Atualizando Documentos

Vamos começar criando um novo banco de dados. Usaremos a seguinte linha de código para criar um novo banco de dados -

127.0.0.1:8529@_system> db._createDatabase("song_collection")
true

A seguinte linha de código o ajudará a mudar para o novo banco de dados -

127.0.0.1:8529@_system> db._useDatabase("song_collection")
true

O prompt mudará para "@@ song_collection"

127.0.0.1:8529@song_collection>

A partir daqui, estudaremos as operações CRUD. Vamos criar uma coleção no novo banco de dados -

127.0.0.1:8529@song_collection> db._createDocumentCollection('songs')

Resultado

[ArangoCollection 4890, "songs" (type document, status loaded)]
127.0.0.1:8529@song_collection>

Vamos adicionar alguns documentos (objetos JSON) à nossa coleção de 'canções'.

Adicionamos o primeiro documento da seguinte maneira -

127.0.0.1:8529@song_collection> db.songs.save({title: "A Man's Best Friend",
lyricist: "Johnny Mercer", composer: "Johnny Mercer", Year: 1950, _key:
"A_Man"})

Resultado

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

Vamos adicionar outros documentos ao banco de dados. Isso nos ajudará a aprender o processo de consulta dos dados. Você pode copiar esses códigos e colar os mesmos no Arangosh para emular o processo -

127.0.0.1:8529@song_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:8529@song_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---"
}

Como ler documentos

o _keyou o identificador de documento pode ser usado para recuperar um documento. Use o identificador de documento se não houver necessidade de percorrer a coleção em si. Se você tem uma coleção, a função de documento é fácil de usar -

127.0.0.1:8529@song_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
}

Como Atualizar Documentos

Duas opções estão disponíveis para atualizar os dados salvos - replace e update.

A função de atualização corrige um documento, fundindo-o com os atributos fornecidos. Por outro lado, a função de substituição substituirá o documento anterior por um novo. A substituição ainda ocorrerá mesmo se atributos completamente diferentes forem fornecidos. Vamos primeiro observar uma atualização não destrutiva, atualizando o atributo Production` em uma música -

127.0.0.1:8529@song_collection> db.songs.update("songs/A_Man",{production:
"Top Banana"});

Resultado

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

Vamos agora ler os atributos atualizados da música -

127.0.0.1:8529@song_collection> db.songs.document('A_Man');

Resultado

{
   "_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"
}

Um grande documento pode ser facilmente atualizado com o update função, especialmente quando os atributos são muito poucos.

Em contraste, o replace função irá abolir seus dados ao usá-lo com o mesmo documento.

127.0.0.1:8529@song_collection> db.songs.replace("songs/A_Man",{production:
"Top Banana"});

Vamos agora verificar a música que acabamos de atualizar com a seguinte linha de código -

127.0.0.1:8529@song_collection> db.songs.document('A_Man');

Resultado

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

Agora, você pode observar que o documento não possui mais os dados originais.

Como Remover Documentos

A função remover é usada em combinação com o identificador de documento para remover um documento de uma coleção -

127.0.0.1:8529@song_collection> db.songs.remove('A_Man');

Vamos agora verificar os atributos da música que acabamos de remover usando a seguinte linha de código -

127.0.0.1:8529@song_collection> db.songs.document('A_Man');

Obteremos um erro de exceção como o seguinte como saída -

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