كيفية توصيل MongoDB مع Golang

Kyfyt Twsyl Mongodb M Golang



تمامًا مثل لغة C ، تعد لغة Golang أيضًا لغة مفتوحة المصدر يمكن تنفيذها على العديد من الأدوات على أنظمة Windows و Linux / Unix لإنشاء سجلات. مثل C ++ و Java ، يمكننا إجراء اتصال بين نظام عميل MongoDB ولغة Go باستخدام أي أداة golang. للقيام بذلك ، سنقوم بتنفيذ عدة خطوات مهمة وضرورية للغاية في Ubuntu 22.04 من خلال استخدام أداة التعليمات البرمجية Visual Studio لبرنامج. قبل إجراء اتصال بوصلة MongoDB ، نميل إلى تثبيت MongoDB و Visual Studio Code جنبًا إلى جنب مع 'go' والإضافات المطلوبة في الدليل لمساعدتك في لغة Go.

قم بتثبيت MongoDB

لقد قمنا بتنزيل الحزمة 'deb' لخادم MongoDB من موقعها الرسمي على الإنترنت. يمكن أيضًا تنفيذ الحزمة 'Deb' في Ubuntu باستخدام أداة الأمر 'dpkg' في Terminal.







نفّذ ملف خادم MongoDB على الجهاز بحقوق 'sudo' وقدم رمز مرور.



saeedraza @ فيرتوال بوكس: ~ $ سودو dpkg -أنا mongodb-org-server_6.0.3_amd64.deb


إذا وجدت أن خدمة MongoDB غير نشطة من جانبك بعد تجربة تعليمات 'systemctl' الخاصة بـ Ubuntu للتحقق من الحالة ، فيمكنك تحديثها أيضًا. لتنشيط MongoDB ، جرب تعليمات systemctl باستخدام الكلمتين الأساسيتين 'ابدأ' و 'تمكين'.

saeedraza @ فيرتوال بوكس: ~ $ سودو نظام بدء mongod
saeedraza @ فيرتوال بوكس: ~ $ سودو systemctl يُمكَِن منجود
saeedraza @ فيرتوال بوكس: ~ $ سودو systemctl الوضع mongod

قم بتشغيل MongoDB

بعد التثبيت ، قم بتشغيل MongoDb بسرعة باستخدام استعلام 'mongo'. قم بالتبديل إلى قاعدة بيانات 'المسؤول' لتنفيذ خطوات المتابعة.

saeedraza @ فيرتوال بوكس: ~ $ المونغو
إصدار MongoDB shell v5.0.14
الاتصال بـ: mongodb: // 127.0.0.1: 27017 / ؟ ضواغط = معطل & اسم gssapiService = mongodb
جلسة ضمنية: جلسة { 'هوية شخصية' : UUID ( '34cc8e0f-b6b0-4191-adea-676411f66cf5' ) }
إصدار خادم MongoDB: 6.0.3


نقوم بإنشاء مستخدم جديد له حقوق المسؤول باستخدام وظيفة createUser ().

> استخدم admin
تحولت إلى مشرف ديسيبل
> db.createUser (
... {
... المستعمل: 'سعيد' و
... pwd: '12345' و
... الأدوار: [ { وظيفة: 'userAdminAnyDatabase' ، ديسيبل: 'مشرف' } و 'readWriteAnyDatabase' ]

... } )
تمت إضافة المستخدم بنجاح: {
'المستعمل' : 'سعيد' و
'الأدوار' : [
{
'وظيفة' : 'userAdminAnyDatabase' و
'ديسيبل' : 'مشرف'
} و
'readWriteAnyDatabase'
]
}


أذن المستخدم 'سعيد' باستخدام بيانات الاعتماد في وظيفة 'المصادقة' وعرض قواعد البيانات المملوكة حاليًا لـ MongoDB.

> ديسيبل ( 'سعيد' و '12345' )
واحد
> عرض ديسيبل
admin 0.000GB
التهيئة 0.000GB
محلي 0.000 جيجابايت

قم بتثبيت برنامج تشغيل MongoDB لـ Golang

افتح الجهاز في Visual Studio Code وانتقل داخل المجلد 'Golang' الذي تريد إضافة ملفات التعليمات البرمجية المصدر فيه. قم بتشغيل تعليمات 'go mod init' باسم المجلد لإنشاء ملف 'go.mod'. قم بتحميل برنامج تشغيل MongoDB للغة Go عبر استعلام 'go get'.

saeedraza @ فيرتوال بوكس: ~ / Golang $ اذهب mod init Golang


في بعض الحالات ، يلزم تحميل برنامج تشغيل MongoDB بتنسيق bson لـ Golang أيضًا.

saeedraza @ فيرتوال بوكس: ~ / Golang $ اذهب واحصل على go.mongodb.org / سائق المونغو / بس


تأكد من إضافة حزم الامتدادات الضرورية مثل 'gopls' في كود Visual Studio باستخدام لوحة الامتدادات بدون استخدام أي تعليمات.


إلى جانب 'gopls' ، قد يتطلب Golang تثبيت أداة 'dlv' بالتأكيد.

مثال على رمز الذهاب

بدأ ملف الكود 'main.go' باستيراد بعض الحزم المفيدة التي سيتم استخدامها في الكود بأكمله للاتصال. تم إجراء ما مجموعه 7 واردات هنا. بعد استيراد الحزم ، أنشأنا بنية جديدة باسم MongoField بها 4 أعضاء من نوع JSON. 2 من أعضاء البيانات هذه سلاسل و 2 منهم أعداد صحيحة.

بعد ذلك ، تم الإعلان عن نوع ثابت من المتغير 'uri' بعنوان عميل أو يجب عليك إضافة عنوان المضيف المحلي الخاص بك فيه وفقًا لاسم المستخدم وكلمة المرور. تبدأ الوظائف الرئيسية () باستخدام وظيفة connect () في Golang للاتصال بـ MongoDB من خلال كائن 'mongo'. ستأخذ الدالة ApplyURI () المتغير 'uri' كوسيطة لتطبيقها على وظيفة Client () بحيث يمكن إنشاء اتصال من خلال عنوان مضيف. تلعب حزمة السياق الدور الرئيسي لاستدعاء وظيفة TODO () لطلب الاتصال. إذا تم إنشاء الاتصال بين كود Visual Studio و MongoDB بنجاح ، فستتم إضافة إشارة العميل المرتجعة إلى متغير 'العميل' ؛ وإلا فسيتم تخزين الخطأ في المتغير 'err'.

بيان 'if' موجود هنا لعرض الرسائل وفقًا لذلك. إذا حصل المتغير 'err' على قيمة أخرى غير 'لا شيء' ، فإن وظيفة Println () من حزمة التنسيق 'fmt' ستطبع هذا الخطأ على شاشة الإخراج ، المحطة الطرفية. سيتم استخدام الحزمة 'os' للخروج من البرنامج في حالة حدوث الخطأ. يتم استخدام حزمة السياق مرة أخرى هنا لإدارة مهلة الاتصال الذي سيتم إنشاؤه من خلال هذا البرنامج. بالنسبة لقيمة المهلة المحددة 'ctx' ، سيتم تنفيذ برنامجنا. سيتم إنشاء مجموعة جديدة 'شخص' مع قاعدة بيانات جديدة 'جديد' في العميل MongoDB من خلال Golang. سيعرض Println () نوع المجموعة 'c' باستخدام وظيفة 'TypeOf' من حزمة الانعكاس.

تم إنشاء سجل 'Rec' باستخدام بنية أعضاء بيانات MongoField التي تمت تهيئتها هنا واحدًا تلو الآخر. تم عرض نوع السجل وسيتم إدراج السجل 'Rec' في العميل MongoDB باستخدام وظيفة insertOne مع كائن المجموعة 'c'. يؤدي الإدراج الناجح إلى متغير 'نتيجة' يحتفظ بقيمة النجاح بينما يحتفظ المتغير 'insertErr' بقيمة الفشل. يتم استخدام العبارة 'if' مرة أخرى لفحص وعرض الخطأ في إدخال سجل فقط إذا كان المتغير 'insertErr' يحمل قيمة أخرى غير القيمة 'nil'. عدا ذلك ، سيحتفظ جزء 'else' من العبارة ببعض عبارات Println () لعرض نوع السجل المراد إدراجه ومعرف السجل ورسالة النجاح للاتصال والإدراج الذي حدث. كود Golang اكتمل الآن.

الحزمة الرئيسية
يستورد (
'سياق الكلام'
'FMT'
'أنت'
'يعكس'
'الوقت'
'go.mongodb.org/mongo-driver/mongo'
'go.mongodb.org/mongo-driver/mongo/options'
)
يكتب هيكل MongoField {
سلسلة الاسم ' json: 'شارع الحقل' '
سلسلة البريد الإلكتروني ' json: 'شارع الحقل' '
العمر int ' json: 'حقل كثافة العمليات' '
الراتب int ' json: 'حقل كثافة العمليات' '
}
const uri = 'mongodb: // المستخدم: كلمة المرور @ المضيف المحلي: 27017 / ؟ الحجم الأقصى = عشرين & في = الأغلبية '
func الرئيسي ( ) {
العميل ، يخطئ: = mongo.Connect ( السياق ( ) خيارات العميل ( ) تطبيق URI ( يكتب ) )
لو يخطئ ! = لا شيء {
fmt.Println ( 'خطأ Mongo.connect ():' ، يخطئ )
نظام التشغيل خروج ( واحد )
}
ctx، _: = Context.WithTimeout ( السياق. الخلفية ( ) و خمسة عشر * الوقت الثاني )
ج: = قاعدة بيانات العميل ( 'جديد' ) .مجموعة ( 'شخص' )
fmt.Println ( 'نوع المجموعة:' ، انعكاس. TypeOf ( ج ) و ' ' )
Rec: = MongoField {
اسم: 'عدن' و
بريد إلكتروني: 'eden@gmail.com' و
عمر: أربعة خمسة و
مرتب: 50000 }
fmt.Println ( 'نوع السجل: ' ، انعكاس. TypeOf ( تسجيل ) و ' ' )
النتيجة ، insertErr: = c.InsertOne ( ctx ، التسجيل )
لو إدراج ! = لا شيء {
fmt.Println ( 'إدراج خطأ واحد:' ، إدراج )
نظام التشغيل خروج ( واحد )
} آخر {
fmt.Println ( 'نوع نتيجة InsertOne:' ، انعكاس. TypeOf ( نتيجة ) )
newID = النتيجة
fmt.Println ( 'معرف السجل المدرج:' ، newID ) )
fmt.Println ( 'السجلات المتصلة وإدراجها بنجاح!' )
} }


احفظ كود Golang وافتح الجهاز داخل مجلد Golang. الآن ، استخدم التعليمات 'go' مع الكلمة الأساسية 'run' لتنفيذ ملف الكود 'main.go'. كان التصحيح ناجحًا وتم إنشاء مجموعة 'الشخص' بنجاح في MongoDB. يُظهر الإخراج نوع المجموعة ونوع السجل ونوع النتيجة و 'معرف' السجل.

saeedraza @ فيرتال بوكس: ~ / جولانج $ Go Run Main.go
نوع المجموعة: * المونغو
نوع السجل: main.MongoField
نوع واحد من النتائج: * mongo.InsertOne نتيجة
معرف السجل المدرج: معرف الكائن ( “63a8535ac97b4218230664b6” )
السجلات التي تم توصيلها وإدراجها بنجاح.


افتح بوصلة 'MongoDB' في نهايتك وتواصل مع مضيفها المحلي باستخدام 'URI'.


بعد الانتقال داخل قاعدة البيانات 'الجديدة' ، حصلنا على مجموعة 'الشخص' المعروضة في قسم 'المستندات' جنبًا إلى جنب مع السجل الذي أضفناه.

استنتاج

يوضح هذا الدليل استخدام لغة Go لإضافة سجلات في عميل MongoDB باستخدام أداة Visual Studio Code في نظام Linux. لهذا ، قمنا بتثبيت mongodb مع برنامج التشغيل mongodb لـ 'golang' في النظام. باستخدام لغة Golang ، أنشأنا ملف 'go' في MongoDB وناقشنا مجموعة متنوعة من الحزم والوظائف الخاصة بـ Golang لإنشاء اتصال بـ MongoDB وإدخال السجلات. في النهاية ، أظهرنا النتائج على بوصلة MongoDB والتي توضح أنه يمكنك توصيل أي أداة Golang بـ MongoDB.