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

संग्रह के दस्तावेज़ में विभिन्न उपप्रकारों का योग

आप अपनी स्कीमा को बदले बिना अपनी इच्छित गणना करने के लिए एकत्रीकरण का उपयोग कर सकते हैं (हालांकि आप इस क्षेत्र के प्रश्नों और एकत्रीकरण को लिखने में आसान बनाने के लिए अपनी स्कीमा बदलने पर विचार कर सकते हैं)।

मैंने पठनीयता के लिए पाइपलाइन को कई चरणों में तोड़ा। पठनीयता के लिए मैंने आपके दस्तावेज़ को थोड़ा सरल भी किया है।

नमूना इनपुट:

> db.md.find().pretty()
{
    "_id" : ObjectId("512f65c6a31a92aae2a214a3"),
    "uid" : "x",
    "val" : "string"
}
{
    "_id" : ObjectId("512f65c6a31a92aae2a214a4"),
    "uid" : "x",
    "val" : "string"
}
{
    "_id" : ObjectId("512f65c6a31a92aae2a214a5"),
    "uid" : "y",
    "val" : "string2"
}
{
    "_id" : ObjectId("512f65e8a31a92aae2a214a6"),
    "uid" : "y",
    "val" : [
        "string3",
        "string4"
    ]
}
{
    "_id" : ObjectId("512f65e8a31a92aae2a214a7"),
    "uid" : "z",
    "val" : [
        "string"
    ]
}
{
    "_id" : ObjectId("512f65e8a31a92aae2a214a8"),
    "uid" : "y",
    "val" : [
        "string1",
        "string2"
    ]
}

पाइपलाइन चरण:

> project1 = {
    "$project" : {
        "uid" : 1,
        "val" : 1,
        "isArray" : {
            "$cond" : [
                {
                    "$eq" : [
                        "$val.0",
                        [ ]
                    ]
                },
                true,
                false
            ]
        }
    }
}
> project2 = {
    "$project" : {
        "uid" : 1,
        "valA" : {
            "$cond" : [
                "$isArray",
                "$val",
                [
                    null
                ]
            ]
        },
        "valS" : {
            "$cond" : [
                "$isArray",
                null,
                "$val"
            ]
        },
        "isArray" : 1
    }
}
> unwind = { "$unwind" : "$valA" }
> project3 = {
    "$project" : {
        "_id" : 0,
        "uid" : 1,
        "val" : {
            "$cond" : [
                "$isArray",
                "$valA",
                "$valS"
            ]
        }
    }
}

अंतिम एकत्रीकरण:

> db.md.aggregate(project1, project2, unwind, project3, group)
{
    "result" : [
        {
            "_id" : "z",
            "vals" : [
                "string"
            ]
        },
        {
            "_id" : "y",
            "vals" : [
                "string1",
                "string4",
                "string3",
                "string2"
            ]
        },
        {
            "_id" : "x",
            "vals" : [
                "string"
            ]
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. सूचना:अपरिभाषित संपत्ति:MongoId

  2. ऐरे को अपडेट करें जहां यह मौजूद है या नया ऐरे आइटम डालें

  3. Mongodb को उपयोगकर्ता नहीं मिला [ईमेल संरक्षित]

  4. मैं दिनांक के लिए अनुक्रमणिका कैसे बनाऊं?

  5. DBRefs (मोंगो दस्तावेज़ संदर्भ) उत्सुकता से नहीं लाए गए