2013-12-18 12 views
14

क्या किसी फ़ील्ड पर समान मान वाले ऑब्जेक्ट्स के लिए क्वेरी करने का कोई तरीका है? उदाहरण के लिए मैं रिकॉर्ड्स है:विशिष्ट रिकॉर्ड मान प्राप्त करें

{ id : 1, name : "my_name", salary : 1200 } 
{ id : 2, name : "my_name", salary : 800 } 
{ id : 3, name : "john", salary : 500 } 

क्वेरी: साथ NOT_THE_SAME (नाम) सभी को खोजने के

मैं सिर्फ आईडी 1 और 3 के साथ रिकॉर्ड क्योंकि मैं निर्दिष्ट है कि मैं फ़ील्ड में वही मान के साथ रिकॉर्ड नहीं करना चाहती चाहते हैं name या 2 और 3, इससे कोई फर्क नहीं पड़ता।

उत्तर

12

आप अनन्य मानों की एक सरणी वापस पाने के लिए db.collection.distinct उपयोग कर सकते हैं:

> db.test.distinct("name") 
[ "my_name", "john" ] 
7

तुम भी संग्रह फ़िल्टर करके अलग अलग सजा उपयोग कर सकते हैं। उदाहरण के लिए, आप नामों में से अलग-अलग मान वेतन से 800 से अधिक निम्न क्वेरी के साथ प्राप्त कर सकते हैं:

db.test.distinct("name", { "salary": { $gt: 800 } }) 
1
db.runCommand ({ 
    distinct: "CollectionName", 
    key: "key", 
    query: { "createdDate": { 
     $gte:new ISODate("2017-04-04T23:59:59Z"), 
     $lte:new ISODate("2017-04-25T23:59:59Z")}} }) 

इस क्वेरी संग्रह में डेटा खोजने में मदद करता है, सभी दस्तावेजों के बीच की शर्त को पूरा से कुंजी का मान लायेगा तारीख

+0

हालांकि यह कोड स्निपेट प्रश्न हल कर सकता है, [एक स्पष्टीकरण सहित] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और वे लोग आपके कोड सुझाव के कारणों को नहीं जानते हैं। स्पष्टीकरण टिप्पणियों के साथ अपने कोड को भीड़ न करने का प्रयास करें, इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है! – Carpetsmoker

+0

@ कार्पेट्समोकर - टिप्पणी पोस्ट की गई, उम्मीद है कि इससे मदद मिलती है – GSK

संबंधित मुद्दे