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

सशर्त रूप से वापसी के लिए एक सरणी तत्व का मूल्यांकन करें

यहाँ MongoDB 2.4.9 में एग्रीगेशन फ्रेमवर्क का उपयोग करते हुए एक उदाहरण दिया गया है जो मुझे लगता है कि आपके द्वारा किए गए परिणाम को प्राप्त करता है:

db.books.aggregate(

    // Unwind the refs array
    { $unwind: "$refs" },

    // Sort by refs.default descending so "true" values will be first, nulls last
    { $sort: {
        "refs.default" : -1
    }},

    // Group and take the first ref; should either be "default:true" or first element
    { $group: {
        _id: "$_id",
        name: { $addToSet: "$name" },
        refs: { $first: "$refs" }
    }},

    // (optional) Sort by name to match the example output
    { $sort: {
        name: 1,
    }},

    // (optional) Clean up output
    { $project: {
        _id: 0,
        name: 1,
        refs: 1
    }}
)

नमूना परिणाम:

{
    "result" : [
        {
            "name" : [
                "Book1"
            ],
            "refs" : {
                "oid" : "object5",
                "default" : true
            }
        },
        {
            "name" : [
                "Book2"
            ],
            "refs" : {
                "oid" : "object5",
                "default" : true
            }
        },
        {
            "name" : [
                "Book3"
            ],
            "refs" : {
                "oid" : "object4"
            }
        },
        {
            "name" : [
                "Book4"
            ],
            "refs" : {
                "oid" : "object4",
                "default" : true
            }
        }
    ],
    "ok" : 1
}

नोट:

  • यह refs . के लिए सॉर्ट ऑर्डर व्यवहार पर एक धारणा बनाता है जहां "डिफ़ॉल्ट:सत्य" गुम है। संक्षिप्त परीक्षण पर मूल क्रम संरक्षित प्रतीत होता है, इसलिए सरणी का "पहला" तत्व अपेक्षित है।

  • उपयोग किए गए एकत्रीकरण ऑपरेटरों के कारण, आउटपुट name एक एकल तत्व सरणी है, और refs अन्तर्निहित वस्तु बन जाती है। एग्रीगेशन फ्रेमवर्क में और हेर-फेर करने के बजाय, आप अपने एप्लिकेशन कोड में केवल सही फ़ील्ड्स का संदर्भ दे सकते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. SQL में अल्पविराम के साथ संख्याओं को कैसे प्रारूपित करें

  2. मैं ग्रिडएफएस बकेट कैसे निर्दिष्ट कर सकता हूं?

  3. MongoDB में कर्सर.काउंट () और कर्सर.साइज़ () के बीच अंतर

  4. mongodb विभिन्न डेटाबेस से चयन करें

  5. MongoDB का उपयोग कर ट्विटर जैसा ऐप