В этой главе мы изучим различные операции с Арангошем.
Ниже приведены возможные операции с 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>
Отсюда мы будем изучать операции 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