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