مشاركة عبر


Quickstart: استخدم Azure DocumentDB مع MongoDB driver for Go

في هذا البدء السريع، تنشئ تطبيق Azure DocumentDB الأساسي باستخدام Go. Azure DocumentDB هو مخزن بيانات NoSQL يسمح للتطبيقات بتخزين المستندات في السحابة والوصول إليها باستخدام برامج تشغيل MongoDB الرسمية. يوضح هذا الدليل كيفية إنشاء المستندات وأداء المهام الأساسية في مجموعة Azure DocumentDB باستخدام Go.

مرجع | APIالشيفرة | المصدريةالحزمة (Go)

Prerequisites

  • اشتراك Azure

  • غولانج 1.18 أو لاحقا

إنشاء عنقود Azure DocumentDB

للبدء، تحتاج أولا إلى إنشاء مجموعة Azure DocumentDB، والتي تعد الأساس لتخزين وإدارة بيانات NoSQL الخاصة بك.

  1. تسجيل الدخول إلى بوابة Azure (https://portal.azure.com).

  2. من قائمة مدخل Microsoft Azure أو الصفحة الرئيسية، حدد إنشاء مورد.

  3. في الصفحة الجديدة ، ابحث عن Azure DocumentDB واختر ذلك.

    لقطة شاشة تظهر البحث عن Azure DocumentDB.

  4. في صفحة مجموعة إنشاء Azure DocumentDB وداخل قسم الأساسيات ، اختر خيار التكوين داخل قسم مستوى العنقود .

    لقطة شاشة تظهر خيار تكوين العنقود.

  5. في صفحة المقياس ، قم بتكوين هذه الخيارات ثم اختر الحفظ لاستمرار تغييراتك في مستوى العنقود.

    القيمة‬
    طبقة نظام المجموعة M30 tier, 2 vCore, 8-GiB RAM
    التخزين لكل جزء 128 GiB

    لقطة شاشة لخيارات التكوين للحوسبة والتخزين لمجموعة جديدة من Azure DocumentDB.

  6. في قسم الأساسيات، قم بتكوين الخيارات التالية:

    القيمة‬
    اشتراك حدد اشتراك Azure الخاص بك
    مجموعة الموارد إنشاء مجموعة موارد جديدة أو تحديد مجموعة موارد موجودة
    اسم شبكة نظام المجموعة توفير اسم فريد عالميا
    Location تحديد منطقة Azure مدعومة لاشتراكك
    نسخة MongoDB تحديد 8.0
    "Admin username" إنشاء اسم مستخدم للوصول إلى المجموعة كمسؤول مستخدم
    كلمة المرور استخدم كلمة مرور فريدة مرتبطة باسم المستخدم

    لقطة شاشة تظهر معلمات العنقود.

    Tip

    سجل القيم التي تستخدمها لاسم المستخدموكلمة المرور. تستخدم هذه القيم لاحقا في هذا الدليل. لمزيد من المعلومات حول القيم الصحيحة، انظر حدود التجمع.

  7. حدد Next: Networking.

  8. في قسم قواعد جدار الحماية في تبويب الشبكات ، قم بتكوين هذه الخيارات:

    القيمة‬
    أسلوب الاتصال Public access
    السماح بالوصول العام من خدمات وموارد Azure داخل Azure إلى هذا العنقود Enabled
  9. أضف قاعدة جدار حماية لجهاز العميل الحالي الخاص بك لمنح الوصول إلى العنقود عن طريق اختيار + إضافة عنوان IP الحالي للعميل.

    لقطة شاشة تظهر إعدادات الشبكة.

    Tip

    في العديد من بيئات الشركة، يتم إخفاء عناوين IP لجهاز المطور بسبب VPN أو إعدادات شبكة الشركة الأخرى. في هذه الحالات، يمكنك السماح مؤقتا بالوصول إلى جميع عناوين IP بإضافة 0.0.0.0 - 255.255.255.255 نطاق عناوين IP كقاعدة جدار حماية. استخدم قاعدة جدار الحماية هذه مؤقتا فقط كجزء من اختبار وتطوير الاتصال.

  10. حدد "Review + create".

  11. راجع الإعدادات التي تقدمها، ثم حدد إنشاء. يستغرق بضع دقائق لإنشاء المجموعة. انتظر حتى يكتمل نشر الموارد.

  12. وأخيرا، اختر Go to resource للانتقال إلى عنقود Azure DocumentDB في البوابة.

لقطة شاشة تظهر خيارات الموارد الجاهزة.

الحصول على بيانات اعتماد نظام المجموعة

احصل على بيانات الاعتماد التي تستخدمها للاتصال بالعنقود.

  1. في صفحة المجموعة، اختر خيار سلاسل الاتصال في قائمة الموارد.

  2. في قسم سلاسل الاتصال ، قم بنسخ أو تسجيل القيمة من حقل سلسلة الاتصال .

لقطة شاشة تظهر خيار سلاسل الاتصال.

Important

لا تتضمن سلسلة الاتصال في البوابة الإلكترونية قيمة كلمة المرور. يجب استبدال العنصر النائب <password> ببيانات الاعتماد التي أدخلتها عند إنشاء نظام المجموعة أو إدخال كلمة المرور بشكل تفاعلي.

تهيئة المشروع

أنشئ وحدة Go جديدة في دليلك الحالي.

  1. ابدأ في دليل فارغ.

  2. افتح طرفية في الدليل الحالي.

  3. تهيئة وحدة نمطية Go جديدة.

    go mod init azure-documentdb-go-quickstart
    

تثبيت مكتبة العميل

مكتبة العملاء متاحة عبر Go كوحدة go.mongodb.org/mongo-driver/v2/mongo تعريفية.

  1. قم بتثبيت برنامج تشغيل MongoDB Go باستخدام go get.

    go get go.mongodb.org/mongo-driver/v2/mongo
    
  2. أنشئ ملف Go جديد باسم main.go رمز طلبك.

  3. استيراد الحزم المطلوبة إلى كود التطبيق الخاص بك:

    import (
        "context"
        "fmt"
        "log"
        "time"
    
        "go.mongodb.org/mongo-driver/v2/bson"
        "go.mongodb.org/mongo-driver/v2/mongo"
        "go.mongodb.org/mongo-driver/v2/mongo/options"
    )
    

نموذج الكائن

Name Description
mongo.Client النوع المستخدم للاتصال ب MongoDB.
mongo.Database يمثل قاعدة بيانات في نظام المجموعة.
mongo.Collection يمثل مجموعة داخل قاعدة بيانات في نظام المجموعة.

أمثلة على التعليمات البرمجية

يرتبط الكود في هذا التطبيق بقاعدة بيانات مسماة adventureworks ومجموعة باسم products. تحتوي المجموعة products على تفاصيل مثل الاسم، الفئة، الكمية، معرف فريد، وعلم بيع لكل منتج. عينات الكود هنا تقوم بأكثر العمليات شيوعا عند العمل مع مجموعة.

مصادقة العميل

أولا، اتصل بالعميل باستخدام سلسلة اتصال أساسية.

  1. أنشئ الدالة الرئيسية وقم بإعداد سلسلة الاتصال. استبدل <your-cluster-name>، <your-username>، و <your-password> بمعلومات العنقود الفعلية الخاصة بك.

    func main() {
        // Connection string for Azure DocumentDB cluster
        connectionString := "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"
    
        // Create client options
        clientOptions := options.Client().ApplyURI(connectionString)
    
  2. اتصل بعميل MongoDB وتحقق من الاتصال.

        // Create a new client and connect to the server
        ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
        defer cancel()
    
        client, err := mongo.Connect(ctx, clientOptions)
        if err != nil {
            log.Fatal(err)
        }
        defer client.Disconnect(ctx)
    
        // Ping the primary
        err = client.Ping(ctx, nil)
        if err != nil {
            log.Fatal(err)
        }
    
        fmt.Println("Successfully connected and pinged Azure DocumentDB")
    

الحصول على مجموعة

الآن، احصل على قاعدة بياناتك ومجموعتك. إذا لم تكن قاعدة البيانات والمجموعة موجودة بالفعل، استخدم برنامج التشغيل لإنشاؤها تلقائيا.

  1. احصل على مرجع لقاعدة البيانات.

        // Get database reference
        database := client.Database("adventureworks")
        fmt.Println("Connected to database:", database.Name())
    
  2. احصل على مرجع للمجموعة داخل قاعدة البيانات.

        // Get collection reference
        collection := database.Collection("products")
        fmt.Println("Connected to collection:", collection.Name())
    

إنشاء مستند

ثم، أنشئ بعض المستندات الجديدة ضمن مجموعتك. قم بترقية الوثائق لضمان استبدال أي مستندات موجودة إذا كانت موجودة بالفعل بنفس المعرف الفريد.

  1. حدد نوع المنتج وأنشئ نماذج من مستندات المنتج.

        type Product struct {
            ID       string  `bson:"_id,omitempty"`
            Name     string  `bson:"name"`
            Category string  `bson:"category"`
            Quantity int     `bson:"quantity"`
            Price    float64 `bson:"price"`
            Sale     bool    `bson:"sale"`
        }
    
        // Create sample products
        products := []Product{
            {
                ID:       "00000000-0000-0000-0000-000000004018",
                Name:     "Windry Mittens",
                Category: "apparel-accessories-gloves-and-mittens",
                Quantity: 121,
                Price:    35.00,
                Sale:     false,
            },
            {
                ID:       "00000000-0000-0000-0000-000000004318",
                Name:     "Niborio Tent",
                Category: "gear-camp-tents",
                Quantity: 140,
                Price:    420.00,
                Sale:     true,
            },
        }
    
  2. أدخل المستندات باستخدام عمليات upsert.

        // Insert documents with upsert
        for _, product := range products {
            filter := bson.M{"_id": product.ID}
            update := bson.M{"$set": product}
            opts := options.Update().SetUpsert(true)
    
            result, err := collection.UpdateOne(ctx, filter, update, opts)
            if err != nil {
                log.Fatal(err)
            }
    
            if result.UpsertedID != nil {
                fmt.Printf("Inserted document with ID: %v\n", result.UpsertedID)
            } else {
                fmt.Printf("Updated document with ID: %s\n", product.ID)
            }
        }
    

استرجاع مستند

بعد ذلك، قم بإجراء عملية قراءة نقطية لاسترجاع مستند معين من مجموعتك.

  1. حدد الفلتر للعثور على مستند معين حسب معرف.

        // Retrieve a specific document by ID
        filter := bson.M{"_id": "00000000-0000-0000-0000-000000004018"}
        var retrievedProduct Product
    
  2. نفذ الاستعلام وفك شفرة النتيجة.

        err = collection.FindOne(ctx, filter).Decode(&retrievedProduct)
        if err != nil {
            log.Fatal(err)
        }
    
        fmt.Printf("Retrieved product: %+v\n", retrievedProduct)
    

الاستعلام عن المستندات

وأخيرا، استعلام عدة مستندات باستخدام لغة الاستعلام MongoDB (MQL).

  1. حدد استعلاما للعثور على مستندات تطابق معايير محددة.

        // Query for products on sale
        queryFilter := bson.M{"sale": true}
        cursor, err := collection.Find(ctx, queryFilter)
        if err != nil {
            log.Fatal(err)
        }
        defer cursor.Close(ctx)
    
  2. كرر عبر المؤشر لاسترجاع جميع المستندات المطابقة.

        fmt.Println("Products on sale:")
        for cursor.Next(ctx) {
            var product Product
            if err := cursor.Decode(&product); err != nil {
                log.Fatal(err)
            }
            fmt.Printf("- %s: $%.2f (Category: %s)\n", product.Name, product.Price, product.Category)
        }
    
        if err := cursor.Err(); err != nil {
            log.Fatal(err)
        }
    }
    

استكشف بياناتك باستخدام كود Visual Studio

استخدم امتداد DocumentDB في كود Visual Studio لأداء العمليات الأساسية لقواعد البيانات، بما في ذلك الاستعلام، والإدراج، والتحديث، وحذف البيانات.

  1. فتح Visual Studio Code.

  2. انتقل إلى عرض الامتدادات وابحث عن المصطلح DocumentDB. حدد موقع امتداد DocumentDB ل VS Code .

  3. اختر زر التثبيت الخاص بالامتداد. انتظر حتى يكتمل التثبيت. أعد تحميل كود فيجوال ستوديو إذا طلب منك ذلك.

  4. انتقل إلى امتداد DocumentDB باختيار الأيقونة المقابلة في شريط النشاط.

  5. في صفحة DocumentDB Connections ، اختر + اتصال جديد....

  6. في الحوار، اختر Service Discovery ثم Azure DocumentDB - Azure Service Discovery.

  7. اختر اشتراك Azure الخاص بك ومجموعة Azure DocumentDB التي أنشأتها حديثا.

    Tip

    في العديد من بيئات الشركة، يتم إخفاء عناوين IP لجهاز المطور بسبب VPN أو إعدادات شبكة الشركة الأخرى. في هذه الحالات، يمكنك السماح مؤقتا بالوصول إلى جميع عناوين IP بإضافة 0.0.0.0 - 255.255.255.255 نطاق عناوين IP كقاعدة جدار حماية. استخدم قاعدة جدار الحماية هذه مؤقتا فقط كجزء من اختبار وتطوير الاتصال. لمزيد من المعلومات، راجع تكوين جدار الحماية.

  8. في نافذة DocumentDB Connections ، قم بتوسيع العقدة الخاصة بمجموعتك وانتقل إلى عقد المستندات والمجموعات الحالية.

  9. افتح قائمة السياق للمجموعة ثم اختر DocumentDB Scrapbook > New DocumentDB Scrapbook.

  10. أدخل أوامر لغة الاستعلام (MQL) التالية من MongoDB ثم اختر تشغيل الكل. راقب مخرجات الأوامر.

    db.products.find({
      price: { $gt: 200 },
      sale: true
    })
    .sort({ price: -1 })
    .limit(3)
    

تنظيف الموارد

عندما تنتهي من مجموعة Azure DocumentDB، يمكنك حذف الموارد التي أنشأتها في Azure حتى لا تتحمل المزيد من الرسوم.

  1. في شريط البحث في مدخل Microsoft Azure، ابحث عن Resource groups وحددها.

    لقطة شاشة تظهر خيار البحث في مجموعات الموارد.

  2. في القائمة، حدد مجموعة الموارد التي استخدمتها لهذا التشغيل السريع.

    لقطة شاشة تظهر مجموعة الموارد.

  3. في صفحة مجموعة الموارد، حدد "Delete resource group".

  4. في مربع حوار تأكيد الحذف، أدخل اسم مجموعة الموارد لتأكيد أنك تنوي حذفها. وأخيرا، حدد حذف لحذف مجموعة الموارد نهائيا.

    لقطة شاشة تظهر زر تأكيد حذف مجموعة الموارد.