یہ باب Golang MongoDB دستاویز کوئری کرنے کے استعمال کا تعارف پیش کرتا ہے۔

پیش نیاز ہدایت

نصیحت: اگر آپ MongoDB کوئری سنٹیکس کو ناواقف ہیں تو براہ کرم پہلے MongoDB ہدایت نامہ پڑھیں۔ جوہری سنٹیکس جو Golang میں MongoDB کارروائیوں کے لئے استعمال ہوتی ہے، وہی ہے۔

ٹیسٹ ڈیٹا تیار کریں

coll کلیکشن میں ایک بیچ کے دستاویز ڈیٹا شامل کریں۔

docs := []interface{}{
    bson.D{
        {"item", "journal"},
        {"qty", 25},
        {"size", bson.D{
            {"h", 14},
            {"w", 21},
            {"uom", "cm"},
        }},
        {"status", "A"},
    },
    // ... (دیگر دستاویز ڈیٹا)
}

result, err := coll.InsertMany(context.Background(), docs)

تمام دستاویز کوئری

cursor, err := coll.Find(
    context.Background(),
    bson.D{}, // خالی کوئری حالت تشکیل دیں
)

برابری کوئری حالات

SQL کی برابری میچ کی طرح۔

cursor, err := coll.Find(
    context.Background(),
    bson.D{{"status", "D"}},   // برابری حالت: status = D
)

in کوئری آپریٹر

SQL کی in کوئری کی طرح۔

cursor, err := coll.Find(
    context.Background(),
    bson.D{{"status", bson.D{{"$in", bson.A{"A", "D"}}}}}) // برابری حالت: status in ('A', 'D')

and کوئری حالات

SQL کی and منطقی اظہار کی طرح۔

cursor, err := coll.Find(
    context.Background(),
    bson.D{ // برابری حالت: status='A' اور qty < 30 
        {"status", "A"},
        {"qty", bson.D{{"$lt", 30}}},
    })

or کوئری حالات

SQL کی or منطقی اظہار کی طرح۔

cursor, err := coll.Find(
    context.Background(),
    bson.D{ // برابری حالت: status = "A" یا qty < 30
        {"$or", // $or آپریٹر استعمال کرتے ہوئے
            bson.A{ // bson.A ایرے کی قسم کی تعریف کا استعمال کرتے ہوئے
                bson.D{{"status", "A"}},
                bson.D{{"qty", bson.D{{"$lt", 30}}}},
            }},
    })

مرکب کوئری مثال

cursor, err := coll.Find(
    context.Background(),
    bson.D{ // برابری حالت: status = "A" اور ( qty < 30 یا item LIKE "p%")
        {"status", "A"},
        {"$or", bson.A{
            bson.D{{"qty", bson.D{{"$lt", 30}}}},
            bson.D{{"item", primitive.Regex{Pattern: "^p", Options: ""}}},
        }},
    })

طولی کوئری نتائج

مثال 1

// دستاویز جہاں نام 'Bob' ہے کو کوئیری کریں
cursor, err := coll.Find(context.TODO(), bson.D{{"name", "Bob"}}, opts)
if err != nil {
	log.Fatal(err)
}

// bson.M قسم کے دستاویز کا ایک ایرے کو محفوظ کرنے کیلئے بیان کریں، جہاں bson.M ایک خالص کی نمک والا خالی ہوتا ہے ذرا منقولہ ڈیٹا ساخت ہے۔
var results []bson.M
// سب دستاویز کے نتائج کو حاصل کرنے کے لئے All تفصیل استعمال کریں اور نتائج کو نتائج متغیر میں محفوظ کریں۔
if err = cursor.All(context.TODO(), &results); err != nil {
	log.Fatal(err)
}

// نتائج کے ایرے کو طیارہ کریں
for _, result := range results {
	fmt.Println(result)
}

تشریح: یہ مثال دستاویز ڈیٹا کو محفوظ کرنے کے لئے bson.M قسم کا استعمال کرتی ہے۔ آپ کسی بھی ساخت کی ایک مخصوص قسم کو تنظیم کرسکتے ہیں جب تک فیلڈز دستاویز کے مطابق ہوں۔

مثال 2:

// نتائج محفوظ کرنے کیلئے قسم struct کا ایک موجودہ متغیر تعریف کریں
var result struct {
    Value float64
}

// نام = 'pi' کی شرائط کی دستاویز کی تعریف کریں
filter := bson.D{{"name", "pi"}}
// ایک ساده سیاق و سباق  شرائط کے لئے ایک سیاق وسباق2 کا کونٹیکسٹ شہ  بنائیں اور استعمال کریں کے تنقیدی ٹائم آؤٹ کو 5 سیکنڈ کریں۔
ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

// شرائط کے مطابق ایک واحد ڈیٹا کو کوئیری کریں، اور نتائج کو result مختص کرنے کے لئے اس خوشیے کو استعمال کریں۔
err = collection.FindOne(ctx, filter).Decode(&result)

// کوئیری کی خرابیوں کی تصدیق کریں
if err == mongo.ErrNoDocuments {
    //دستاویز نہیں ملی
    fmt.Println("دستاویز موجود نہیں ہے")
} else if err != nil {
    log.Fatal(err)
}
// دیگر ہینڈلنگ

نصیحت: زیادہ پیچیدہ MongoDB کوئیری اظہار کی سینٹیکس کیلئے، براہ کرم MongoDB ٹیوٹوریل دیکھیں۔