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

MongoDB वस्तुओं की एक सरणी के अंदर डेटा में शामिल होता है

MongoDB 3.4.4 और नए संस्करण का उपयोग करना

एकत्रीकरण ढांचे के साथ, $lookup ऑपरेटर सरणियों का समर्थन करता है

db.diagnoses.aggregate([
    { "$addFields": { 
        "prescription": { "$ifNull" : [ "$prescription", [ ] ] }    
    } },
    { "$lookup": {
        "from": "drugs",
        "localField": "prescription.drug",
        "foreignField": "_id",
        "as": "drugs"
    } },
    { "$addFields": {
        "prescription": {
            "$map": {
                "input": "$prescription",
                "in": {
                    "$mergeObjects": [
                        "$$this",
                        { "drug": {
                            "$arrayElemAt": [
                                "$drugs",
                                { 
                                    "$indexOfArray": [
                                        "$drugs._id",
                                        "$$this.drug"
                                    ] 
                                }
                            ]
                        } }
                    ]
                }
            }
        }
    } },
    { "$project": { "drugs": 0 } }
])

मोंगोडीबी के पुराने संस्करणों के लिए:

आप एक पाइपलाइन बना सकते हैं जो पहले prescription . को समतल करती है $unwind . का उपयोग करके सरणी ऑपरेटर और एक $lookup "दवाओं" संग्रह पर "बाएं बाहरी जुड़ाव" करने के लिए बाद में पाइपलाइन चरण। एक और $unwind लागू करें "शामिल" फ़ील्ड से बनाए गए सरणी पर ऑपरेशन। $group पहली पाइपलाइन से पहले चपटे दस्तावेज़ जहां $unwind प्रिस्क्रिप्शन सरणी में ऑपरेटर प्रत्येक तत्व के लिए एक दस्तावेज़ आउटपुट करता है।

उपरोक्त पाइपलाइन को असेंबल करते हुए, निम्नलिखित समग्र ऑपरेशन चलाएँ:

db.diagnoses.aggregate([
    { 
        "$project": {               
            "patientid": 1,
            "doctorid": 1,
            "medicalcondition": 1,
            "diagnosis": 1,
            "addmissiondate": 1,
            "dischargedate": 1,
            "bhtno": 1,
            "prescription": { "$ifNull" : [ "$prescription", [ ] ] } 
        }
    },
    {
       "$unwind": {
           "path": "$prescription",
           "preserveNullAndEmptyArrays": true
        }
    },      
    {
        "$lookup": {
            "from": "drugs",
            "localField": "prescription.drug",
            "foreignField": "_id",
            "as": "prescription.drug"
        }
    },
    { "$unwind": "$prescription.drug" },
    { 
        "$group": {
            "_id": "$_id",
            "patientid" : { "$first": "$patientid" },
            "doctorid" : { "$first": "$doctorid" },
            "medicalcondition" : { "$first": "$medicalcondition" },
            "diagnosis" : { "$first": "$diagnosis" },
            "addmissiondate" : { "$first": "$addmissiondate" },
            "dischargedate" : { "$first": "$dischargedate" },
            "bhtno" : { "$first": "$bhtno" },
            "prescription" : { "$push": "$prescription" }
        }
    }
])

नमूना आउटपुट

{
    "_id" : ObjectId("582d43d18ec3f432f3260682"),
    "patientid" : ObjectId("582aacff3894c3afd7ad4677"),
    "doctorid" : ObjectId("582a80c93894c3afd7ad4675"),
    "medicalcondition" : "high fever, cough, runny nose.",
    "diagnosis" : "Viral Flu",
    "addmissiondate" : "2016-01-12",
    "dischargedate" : "2016-01-16",
    "bhtno" : "125",
    "prescription" : [ 
        {
            "drug" : {
                "_id" : ObjectId("58345e0e996d340bd8126149"),
                "genericname" : "Paracetamol Tab 500mg",
                "type" : "X",
                "isbrand" : false
            },
            "instructions" : "Take 2 daily, after meals."
        }, 
        {
            "drug" : {
                "_id" : ObjectId("5836bc0b291918eb42966320"),
                "genericname" : "Paracetamol Tab 100mg",
                "type" : "Y",
                "isbrand" : false
            },
            "instructions" : "Take 1 daily, after meals."
        }
    ]
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb उल्का द्वारा कैसे स्थापित किया जाता है?

  2. PyMongo का उपयोग करके mongodb में एक पांडा डेटाफ़्रेम सम्मिलित करें

  3. mongoDB सरणी पृष्ठ पर अंक लगाना

  4. मोंगोडब में एक अपडेट कॉल में दो अलग-अलग सरणियों को पुश करें

  5. MongoDB दस्तावेज़ से फ़ील्ड कैसे निकालें ($ अनसेट)