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

मोंगोडब:विशिष्ट दस्तावेज प्राप्त करने का सबसे अच्छा तरीका और फिर बाकी

वैसे यहाँ बहुत अधिक विवरण नहीं है, लेकिन मैं विचार के लिए एक नमूना मामला दे सकता हूँ। दस्तावेज़ों के निम्नलिखित सेट पर विचार करें:

{ "user" : "fred", "color" : "black" }
{ "user" : "bill", "color" : "blue" }
{ "user" : "ted", "color" : "red" }
{ "user" : "ted", "color" : "black" }
{ "user" : "fred", "color" : "blue" }
{ "user" : "bill", "color" : "red" }
{ "user" : "bill", "color" : "orange" }
{ "user" : "fred", "color" : "orange" }
{ "user" : "ted", "color" : "orange" }
{ "user" : "ally", "color" : "orange" }
{ "user" : "alice", "color" : "orange" }
{ "user" : "alice", "color" : "red" }
{ "user" : "bill", "color" : "purple" }

तो मान लीजिए कि आप बुलबुला करना चाहते हैं आपके परिणामों के शीर्ष पर "बिल" और "टेड" उपयोगकर्ताओं के लिए आइटम, फिर user द्वारा क्रमबद्ध बाकी सब कुछ और color . आप क्या कर सकते हैं दस्तावेज़ों को $project के माध्यम से चलाना कुल मिलाकर चरण इस प्रकार है:

db.bubble.aggregate([

    // Project selects the fields to show, and we add a weight value
    {$project: {
        _id: 0,
        "user": 1,
        "color": 1,
        "weight": {$cond:[
            {$or: [
                {$eq: ["$user","bill"]},
                {$eq: ["$user","ted"]}
            ]},
            1,
            0
         ]}
     }},

    // Then sort the results with the `weight` first, then `user` and `color`
    {$sort: { weight: -1, user: 1, color: 1 }}

])

तो वह जो करता है वह सशर्त रूप से weight के लिए एक मान निर्दिष्ट करता है इस आधार पर कि क्या user आवश्यक मानों में से एक से मिलान किया गया था। जो दस्तावेज़ मेल नहीं खाते, उन्हें बस एक 0 दिया जाता है मूल्य।

जब हम इसे संशोधित स्थानांतरित करते हैं दस्तावेज़ पर $sort चरण, नया weight कुंजी का उपयोग परिणामों को क्रमित करने के लिए किया जा सकता है ताकि "भारित" दस्तावेज़ शीर्ष पर हों, और उसके बाद कुछ और होगा।

आप $project के लिए बहुत कुछ कर सकते हैं। इस तरह एक वजन। अधिक जानकारी के लिए ऑपरेटर संदर्भ देखें:

http://docs.mongodb.org/manual/reference/operator/aggregation/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB बनाम DynamoDB:आपको क्या जानना चाहिए

  2. MongoDB BsonDocument को C# में मान्य JSON में कनवर्ट करें

  3. MongoTemplate का उपयोग करके नेस्टेड सरणी और क्वेरी रिटर्न उप-दस्तावेज़ से खींचने में सक्षम नहीं है

  4. दस्तावेज़ में किसी अन्य फ़ील्ड के मान के साथ फ़ील्ड अपडेट करें

  5. पाइमोंगो रेगेक्स $सभी एकाधिक खोज शब्द