MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB को जोड़ना और बनाना SQL का उपयोग करके जुड़ता है:भाग 1

जहां तक ​​क्वेरी करने का संबंध है SQL रिलेशनल डेटाबेस को जोड़ने का सबसे पसंदीदा तरीका है। यह समझा जाता है कि उपयोगकर्ताओं ने MySQL और PostgreSQL जैसे रिलेशनल डेटाबेस के साथ काम किया होगा जो SQL क्वेरीिंग सुविधा को नियोजित करते हैं। आम तौर पर, SQL को समझना आसान होता है और इसलिए विशेष रूप से रिलेशनल डेटाबेस में व्यापक रूप से उपयोग किया जाता है।

हालाँकि, डेटाबेस में दस्तावेज़ों के विस्तृत सेट को संलग्न करने का प्रयास करते समय SQL काफी जटिल होता है। संक्षेप में, यह दस्तावेज़ डेटाबेस के लिए अभिप्रेत नहीं है क्योंकि यह कई असफलताओं के साथ आता है। उदाहरण के लिए, आप एम्बेडेड सरणी दस्तावेज़ों को आसानी से क्वेरी नहीं कर सकते हैं या इसके बजाय आपको आवश्यक परिणाम देने के लिए डेटा को पुनरावृत्त करने और फ़िल्टर करने के लिए एक उपप्रोग्राम डिज़ाइन करने की आवश्यकता होगी। नतीजतन, इसके परिणामस्वरूप निष्पादन अवधि में वृद्धि होगी। लेकिन SQL में अच्छी समझ रखने से शुरुआत से शुरू करने के बजाय किसी बिंदु से MongoDB के साथ बातचीत करने में बेहतर आधार मिलेगा।

इस ब्लॉग में, हम विभिन्न SQL जॉइन प्रश्नों को दिखाने के लिए स्टूडियो 3T प्रोग्राम का उपयोग करेंगे और बेहतर प्रदर्शन प्राप्त करने के लिए आप उन्हें MongoDB क्वेरी में कैसे फिर से डिज़ाइन कर सकते हैं। कार्यक्रम को इस लिंक से डाउनलोड किया जा सकता है।

SQL को MongoDB से कनेक्ट करना

ऐसे कई ड्राइवर या इंटरफेस हैं जिनके माध्यम से आप मोंगोडीबी के साथ संवाद करने के लिए एसक्यूएल का उपयोग कर सकते हैं, उदाहरण के लिए, ओडीबीसी। ODBC का मतलब ओपन डेटाबेस कनेक्टिविटी है। यह केवल एक इंटरफ़ेस है जो अनुप्रयोगों को उस डेटा तक पहुँचने की मानक प्रक्रिया के रूप में SQL का उपयोग करके डेटाबेस प्रबंधन प्रणालियों में डेटा तक पहुँचने की अनुमति देता है। यह एक अतिरिक्त इंटरऑपरेबिलिटी लाभ के साथ आता है जिससे एक एकल एप्लिकेशन कई डेटाबेस प्रबंधन प्रणालियों तक पहुंच सकता है।

इस ब्लॉग में, हम SQL से कोड तैयार करेंगे और उसका परीक्षण करेंगे और फिर एक MongoDB क्वेरी तैयार करने के लिए इसे एक एकत्रीकरण संपादक के माध्यम से अनुकूलित करेंगे।

एसक्यूएल से MongoDB के लिए मानचित्रण चार्ट

इससे पहले कि हम अधिक विवरण में जाएं, हमें इन 2 डेटाबेस के बीच बुनियादी संबंधों को समझने की जरूरत है, विशेष रूप से क्वेरी की अवधारणा में कीवर्ड।

शब्दावली और अवधारणाएं

<थ>मोंगोडीबी
एसक्यूएल
तालिका
पंक्ति
स्तंभ
तालिका जुड़ती है
संग्रह
BSON दस्तावेज़
फ़ील्ड
$लुकअप

एसक्यूएल में प्राथमिक कुंजी एक अद्वितीय कॉलम को परिभाषित करती है जो मूल रूप से रिकॉर्ड समय के क्रम में पंक्तियों को व्यवस्थित करती है। दूसरी ओर, MongoDB में प्राथमिक कुंजी दस्तावेज़ रखने और यह सुनिश्चित करने के लिए एक अद्वितीय फ़ील्ड है कि अनुक्रमित फ़ील्ड डुप्लिकेट मानों को संग्रहीत नहीं करते हैं।

मोंगोडीबी डीबीए बनें - मोंगोडीबी को प्रोडक्शन में लाना सीखें कि मोंगोडीबी को तैनात करने, मॉनिटर करने, प्रबंधित करने और स्केल करने के लिए आपको क्या जानने की जरूरत है मुफ्त में डाउनलोड करें

SQL और MongoDB के बीच संबंध

मान लें कि हमारे पास एक छात्र डेटा है और हम इस डेटा को SQL डेटाबेस और MongoDB दोनों में रिकॉर्ड करना चाहते हैं। हम एक साधारण छात्र वस्तु को इस प्रकार परिभाषित कर सकते हैं:

{
    name: ‘James Washington’,
    age: 15,
    grade: A,
    Score: 10.5
}

SQL तालिका बनाने में, हमें कॉलम नाम और डेटा प्रकार को परिभाषित करने की आवश्यकता होती है जबकि MongoDB में पहली प्रविष्टि के दौरान स्वचालित रूप से एक संग्रह बनाया जाएगा।

नीचे दी गई तालिका हमें यह समझने में मदद करेगी कि MongoDB में कुछ SQL कथन कैसे लिखे जा सकते हैं।

<थ चौड़ाई="50%">मोंगोडीबी स्कीमा विवरण
SQL स्कीमा स्टेटमेंट
CREATE TABLE students (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  name Varchar (30),
  age Number,
  score Float
)

डेटाबेस में दस्तावेज़ सम्मिलित करने के लिए

INSERT INTO students(Name, age, grade,score) VALUES(“James Washington”, 15, “A”, 10.5)

हम नेवले जैसे कुछ मॉड्यूल का उपयोग करके एक स्कीमा डिज़ाइन को परिभाषित कर सकते हैं और सहसंबंध दिखाने के लिए सीधे दस्तावेज़ डालने के बजाय फ़ील्ड को ऑब्जेक्ट की तरह परिभाषित कर सकते हैं। दस्तावेज़ डालने के दौरान प्राथमिक दायर आईडी स्वचालित रूप से उत्पन्न हो जाएगी।

{
  name: String,
  age Number,
  score: Number
}

संग्रह बनाने के लिए एक नया दस्तावेज़ सम्मिलित करना

db.students.insertOne({
    name: ‘James Washington’,
    age: 15,
    grade: ‘A’,
    score: 10.5
})

मौजूदा तालिका में एक नया कॉलम जोड़ने के लिए एडीडी स्टेटमेंट का उपयोग करना।

ALTER TABLE students ADD units 10

संग्रह दस्तावेज़ों की संरचना अच्छी तरह से परिभाषित नहीं है और इसलिए अद्यतन का उपयोग करके दस्तावेज़ स्तर पर दस्तावेज़ों को अद्यतन करें ()

db.students.updateMany({}, {$set: {units: 10}})

एक कॉलम (इकाइयों) को छोड़ने के लिए

ALTER TABLE students DROP COLUMN units

किसी फ़ील्ड (इकाइयों) को छोड़ने के लिए

db.students.updateMany({}, {$unset: {units: “”}})

छात्रों को एक टेबल छोड़ने के लिए

DROP TABLE students

संग्रह छात्रों को छोड़ने के लिए

db.students.drop()
<थ चौड़ाई ="50%">MongoDB विवरण खोजें
SQL Select Statement

सभी पंक्तियों का चयन करें

SELECT * FROM students

सभी दस्तावेज़ चुनें

db.students.find()

केवल विशिष्ट कॉलम वापस करने के लिए।

SELECT name, grade FROM students

केवल विशिष्ट फ़ील्ड वापस करने के लिए। डिफ़ॉल्ट रूप से, _id फ़ील्ड तब तक लौटा दी जाती है जब तक कि प्रक्षेपण प्रक्रिया में अन्यथा निर्दिष्ट न हो।

db.students.find({}, {name: 1, grade: 1, _id: 0})

_id:0 सेट करने का मतलब केवल लौटाए गए दस्तावेज़ में ही नाम और ग्रेड ऑब्जेक्ट मान होंगे।

कुछ मेल खाने वाले कॉलम मान वाली विशिष्ट पंक्ति(पंक्तियों) का चयन करने के लिए।

SELECT * FROM students WHERE grade = “A”

कुछ मेल खाने वाले फ़ील्ड मान वाले विशिष्ट दस्तावेज़ (दस्तावेज़ों) का चयन करने के लिए।

db.students.find({grade: “A”})

एक स्तंभ के साथ पंक्तियों का चयन करना जिनके मानों में आपूर्ति किए गए मानदंड मान के रूप में कुछ वर्ण हैं

SELECT * FROM students WHERE name like  “James%”

ऐसे फ़ील्ड वाले दस्तावेज़ों का चयन करना जिनके मानों में आपूर्ति किए गए मानदंड मान के रूप में कुछ वर्ण हों

db.students.find({grade: {$regex: /^James/}})

प्राथमिक कुंजी का उपयोग करके पंक्तियों को आरोही क्रम में वापस करने के लिए।

SELECT * FROM students ORDER BY id ASC

प्राथमिक कुंजी का उपयोग करके दस्तावेज़ों को आरोही में वापस करने के लिए

db.students.find().sort({$natural: 1})

कुछ कॉलम (ग्रेड) के अनुसार लौटाई गई पंक्तियों को समूहित करने के लिए

SELECT DISTINCT (grade) FROM students

कुछ फ़ील्ड (ग्रेड) के अनुसार लौटाए गए दस्तावेज़ों को समूहित करना

db.students.aggregate([
{$group: : {_id: “$grade”}}
]

लौटाई गई पंक्तियों की संख्या सीमित करना और कुछ को छोड़ना

SELECT * FROM students LIMIT 1 SKIP 4

लौटाए गए दस्तावेज़ों की संख्या सीमित करना और पंक्तियों को छोड़ना

db.students.find.limit(1).skip(4)

एक अनिवार्य विकल्प यह जानना है कि हमारी क्वेरी कैसे निष्पादित की जाती है इसलिए व्याख्या पद्धति का उपयोग करें।

EXPLAIN SELECT *  FROM students WHERE grade “A”
db.students.find({grade: “A”}).explain()
<थ चौड़ाई="50%">MongoDB अपडेट स्टेटमेंट
SQL Update Statement

उन छात्रों के लिए ग्रेड कॉलम अपडेट करें जिनकी उम्र 15 या उससे अधिक के बराबर है

UPDATE students SET grade  = “B” WHERE age >= 15

यहां हम कुछ ऑपरेटरों जैसे $gt, $lt और $lte का उपयोग करते हैं।

db.students.updateMany({age: {$gte: 15}}, {$set: {status: “B”}})

कुछ कॉलम मान बढ़ाना

UPDATE students SET age  = age + 1 WHERE age < 15
db.students.updateMany({
age: {$lt:15}},{$inc: {age: 1}})
<थ चौड़ाई ="50%">मोंगोडीबी स्टेटमेंट हटाएं
SQL Delete Statement

सभी पंक्तियों को हटाने के लिए

DELETE FROM students

सभी दस्तावेज़ मिटाने के लिए.

db.students.remove({})

एक विशिष्ट पंक्ति को हटाने के लिए जहां कुछ कॉलम का एक विशिष्ट मान होता है।

DELETE FROM students WHERE age = 15
db.students.remove({age: 15})

यह नमूना मानचित्रण तालिका आपको इस बात की बेहतर समझ प्राप्त करने में सक्षम करेगी कि हम अपने अगले विषय में क्या सीखने जा रहे हैं।

एसक्यूएल और स्टूडियो 3टी

स्टूडियो 3T उपलब्ध कार्यक्रमों में से एक है जो SQL और MongoDB को जोड़ने में मदद करता है। इसमें SQL में हेरफेर करने के लिए एक को बढ़ाने के लिए एक SQL क्वेरी सुविधा है। MongoDB भाषा समकक्ष में एक साधारण क्वेरी कोड बनाने के लिए क्वेरी को Mongo शेल में व्याख्या किया गया है। सरल प्रश्न करने के अलावा, स्टूडियो 3T एप्लिकेशन अब जॉइन कर सकता है।

ऊपर दिए गए हमारे नमूना डेटा के लिए, स्टूडियो 3T में आपके डेटाबेस को जोड़ने के बाद, हम अपने मानदंड से मेल खाने वाले दस्तावेज़ को खोजने के लिए SQL विंडो का उपयोग कर सकते हैं अर्थात:

SELECT * FROM students  WHERE name LIKE  'James%';

यदि आपके पास नाम फ़ील्ड वाला कोई दस्तावेज़ है जो जेम्स के मान पर सेट है, तो उसे वापस कर दिया जाएगा। इसी तरह, यदि आप क्वेरी कोड टैब पर क्लिक करते हैं, तो आपको समान MongoDB कोड वाली एक विंडो दिखाई देगी। उपरोक्त कथन के लिए, हमारे पास होगा:

db.getCollection("students").find(
    { 
        "name" : /^James.*$/i
    }
);

सारांश

कभी-कभी आप SQL पर अपने ज्ञान से MongoDB के साथ बातचीत करने का एक त्वरित तरीका चाहते हैं। हमने MongoDB में SQL और इसके समकक्ष के बीच कुछ बुनियादी कोड समानताएं सीखी हैं। इसके अलावा, स्टूडियो 3T जैसे कुछ प्रोग्रामों में SQL क्वेरी को MongoDB समकक्ष भाषा में बदलने और बेहतर परिणामों के लिए इस क्वेरी को फ़ाइन-ट्यून करने के लिए अच्छी तरह से स्थापित टूल हैं। ठीक है, हम में से अधिकांश के लिए, यह हमारे काम को आसान बनाने और यह सुनिश्चित करने के लिए एक महान उपकरण होगा कि अंत में हमारे पास जो भी कोड है वह हमारे डेटाबेस के प्रदर्शन के लिए बहुत इष्टतम है। इस ब्लॉग के भाग 2 में, हम MongoDB में SQL INNER JOIN के बारे में जानेंगे।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - LEFT JOIN के समतुल्य जहाँ एक संग्रह मौजूद नहीं है

  2. कैसे एक Node.js / एक्सप्रेस ऐप में नेवला पूर्व हुक के भीतर से क्वेरी करने के लिए?

  3. MongoDB में संग्रह रिकॉर्ड के अंदर सरणी कैसे क्रमबद्ध करें?

  4. सी # के साथ मोंगोडीबी ग्रिडएफ, छवियों जैसे फाइलों को कैसे स्टोर करें?

  5. क्या मोंगोडब एग्रीगेशन फ्रेमवर्क में फ्लोर फंक्शन है?