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>

ให้เราเพิ่มเอกสารบางอย่าง (ออบเจ็กต์ 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
}

วิธีอัปเดตเอกสาร

มีสองตัวเลือกในการอัปเดตข้อมูลที่บันทึกไว้ - replace และ update.

ฟังก์ชันการอัปเดตจะแก้ไขเอกสารโดยรวมเข้ากับแอตทริบิวต์ที่กำหนด ในทางกลับกันฟังก์ชันแทนที่จะแทนที่เอกสารก่อนหน้าด้วยเอกสารใหม่ การแทนที่จะยังคงเกิดขึ้นแม้ว่าจะมีแอตทริบิวต์ที่แตกต่างกันโดยสิ้นเชิงก็ตาม ก่อนอื่นเราจะสังเกตการอัปเดตแบบไม่ทำลายการอัปเดตแอตทริบิวต์การผลิต "ในเพลง -

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