Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में एकाधिक फ़ील्ड में एकाधिक मान कैसे खोजें?


$text और $search ऑपरेटर का उपयोग करना

एकाधिक फ़ील्ड में टेक्स्ट खोज करने के लिए, पहले संग्रह पर एक टेक्स्ट इंडेक्स बनाएं, फिर $text और $search का उपयोग करें।

उदाहरण: नमूना डेटा

> db.searchMultipleFieldsDemo.insertOne({"_id":100,"FirstSubject":"Java","SecondSubject":"MongoDB"}); 
{ "acknowledged" : true, "insertedId" : 100 }
> db.searchMultipleFieldsDemo.insertOne({"_id":101,"FirstSubject":"MongoDB","SecondSubject":"MySQL"}); 
{ "acknowledged" : true, "insertedId" : 101 }
> db.searchMultipleFieldsDemo.insertOne({"_id":102,"FirstSubject":"MySQL","SecondSubject":"Java"}); 
{ "acknowledged" : true, "insertedId" : 102 }

टेक्स्ट इंडेक्स बनाना (आवश्यक)

> db.searchMultipleFieldsDemo.createIndex({ "FirstSubject": "text", "SecondSubject": "text" })

खोज क्वेरी

> db.searchMultipleFieldsDemo.find({ "$text": { "$search": "Java MongoDB" } });

आउटपुट:


व्याख्या:

  • $search: "Java MongoDB" "Java" या "MongoDB" वाले दस्तावेज़ ढूंढता है (OR तर्क)।
  • परिणाम डिफ़ॉल्ट रूप से टेक्स्ट स्कोर द्वारा क्रमबद्ध होते हैं।
  • सटीक वाक्यांश के लिए उद्धरण चिह्नों का उपयोग करें: "\"Java MongoDB\""।
  • शब्द को बाहर करने के लिए ऋण चिह्न: "Java -MongoDB"।

नोट: एक संग्रह पर केवल एक टेक्स्ट इंडेक्स हो सकता है, लेकिन यह एकाधिक फ़ील्ड को कवर कर सकता है।

  1. - MongoDB एग्रीगेशन में मल्टीपल फ़ील्ड्स द्वारा काउंट करना

    एक ही पाइपलाइन में कई फ़ील्ड्स पर काउंट करने के लिए $facet का उपयोग करें। डेमो डेटा db.demo721.insertOne({ details1: { id:101 }, details2: { id:101 }, details3: { id:101 } }); db.demo721.insertOne({ details1: { id:101 }, details2: { id:102 }, details3: { id:102 } }); क्वेरी

  1. - MongoDB क्वेरी: फील्ड मानों में "@email" जैसे स्ट्रिंग की खोज करें

    MongoDB find() का उपयोग करके ईमेल स्ट्रिंग खोजें। आइए एक कलेक्शन बनाते हैं: > db.demo727.insertOne({UserId:John@email.com}); { acknowledged : true, insertedId : ObjectId(5eab375f43417811278f5898) } > db.demo727.insertOne({UserId:John@yahoo.com}); { acknowledged : true, insertedId : ObjectId(5

  1. - MongoDB $regex ऑपरेटर: केस इनसेंसिटिव खोज के लिए i या I

    इसके लिए आपको केस इनसेंसिटिव (i) का उपयोग करना होगा। आइए एक कलेक्शन बनाते हैं: > db.demo759.insertOne({SubjectName:MySQL}); { acknowledged : true, insertedId : ObjectId(5eb02ba95637cd592b2a4ae7) } > db.demo759.insertOne({SubjectName:MongoDB}); { acknowledged : true, insertedId : ObjectId(5eb0