Учебники

ArangoDB — Crud Operations

В этой главе мы изучим различные операции с Арангошем.

Ниже приведены возможные операции с Arangosh —

  • Создание коллекции документов
  • Создание документов
  • Чтение документов
  • Обновление документов

Давайте начнем с создания новой базы данных. Мы будем использовать следующую строку кода для создания новой базы данных —

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

Следующая строка кода поможет вам перейти на новую базу данных —

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

Подсказка переместится на «@@ song_collection»

127.0.0.1:8529@song_collection>

Коллекция песен Promt Shift

Отсюда мы будем изучать операции CRUD. Давайте создадим коллекцию в новой базе данных —

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

Выход

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

Давайте добавим несколько документов (объекты JSON) в нашу коллекцию песен.

Мы добавляем первый документ следующим образом —

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"})

Выход

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

Давайте добавим другие документы в базу данных. Это поможет нам изучить процесс запроса данных. Вы можете скопировать эти коды и вставить их в Arangosh, чтобы подражать процессу —

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

Как читать документы

_Key или дескриптор документа могут быть использованы для получения документа. Используйте дескриптор документа, если нет необходимости проходить через саму коллекцию. Если у вас есть коллекция, функция документа проста в использовании —

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
}

Как обновить документы

Для обновления сохраненных данных доступны две опции — заменить и обновить .

Функция обновления исправляет документ, объединяя его с заданными атрибутами. С другой стороны, функция замены заменит предыдущий документ новым. Замена все равно произойдет, даже если будут предоставлены совершенно другие атрибуты. Сначала мы увидим неразрушающее обновление, обновив атрибут Production` в песне —

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

Выход

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

Давайте теперь прочитаем обновленные атрибуты песни —

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

Выход

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

Большой документ может быть легко обновлен с помощью функции обновления , особенно когда атрибутов очень мало.

Напротив, функция замены отменит ваши данные при использовании их с тем же документом.

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

Давайте теперь проверим песню, которую мы только что обновили, с помощью следующей строки кода:

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

Выход

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

Теперь вы можете заметить, что в документе больше нет исходных данных.

Как удалить документы

Функция удаления используется в сочетании с дескриптором документа для удаления документа из коллекции —

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

Давайте теперь проверим атрибуты песни, которые мы только что удалили, используя следующую строку кода:

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

Мы получим ошибку исключения, такую ​​как следующая:

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