ArangoDB-Crudオペレーション
この章では、Arangoshのさまざまな操作について学習します。
以下は、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>
'songs'コレクションにいくつかのドキュメント(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
}
ドキュメントを更新する方法
保存されたデータを更新するために2つのオプションが利用可能です- replace そして update。
更新機能は、ドキュメントにパッチを適用し、指定された属性とマージします。一方、置換機能は、以前のドキュメントを新しいドキュメントに置き換えます。完全に異なる属性が提供されている場合でも、置換は引き続き発生します。最初に非破壊的な更新を観察し、曲の属性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"
}
大きなドキュメントは、次のコマンドで簡単に更新できます。 update 特に属性が非常に少ない場合は機能します。
対照的に、 replace 関数は、同じドキュメントでの使用に関するデータを廃止します。
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