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

MongoDB:एक नेस्टेड कुंजी का अस्तित्व

MongoDb संस्करण>=3.6 के साथ आप ऑपरेटर का लाभ उठा सकते हैं $expr अपनी क्वेरी में और $objectToArray का उपयोग करें गतिशील वस्तु को एक सरणी में बदलने के लिए ऑपरेटर, $ifNull सशर्त ऑपरेटर के रूप में।

निम्न उदाहरण इस दृष्टिकोण को प्रदर्शित करता है:

db.collection.find({
    $expr: {
        $gt: [
            {
                $size: {
                    $filter: {
                        input: { $objectToArray: '$$ROOT' },
                        cond: { 
                            $ifNull: ['$$this.v.work', false]
                        }
                    }
                }
            },
            0
        ]
    }
})

मानों को कुंजियों के रूप में रखना अच्छा अभ्यास नहीं है और वर्तमान में (और शायद भविष्य में भी) फ़ील्डनाम में वाइल्डकार्ड के साथ MongoDB संग्रह को क्वेरी करना संभव नहीं है।

क्वेरी के लिए आसान एक वैकल्पिक स्कीमा डिज़ाइन के लिए, मैं एक स्कीमा रीडिज़ाइन का सुझाव दूंगा जो इस मॉडल का अनुसरण करता है:

"_id" : ObjectId("55128d6315f3df650f2038cf"),
"customer_name" : "test user",
"createad" : "2011-04-14 16:44:09",
"data" : [ 
    {
        "key" : "123456",
        "home" : {
            "id" : "1536734296",
            "last" : "2011-04-14 16:44:09"
        },
        "work" : {
            "id" : "1536734296",
            "last" : "2011-04-14 16:44:09"
        }
    }, 
    {
        "key" : "321456",
        "home" : {
            "id" : "1536734296",
            "last" : "2011-04-14 16:44:09"
        },
        "work" : {
            "id" : "1536734296",
            "last" : "2011-04-14 16:44:09"
        }
    }, 
    {
        "key" : "789654",
        "home" : {
            "id" : "1536734296",
            "last" : "2011-04-14 16:44:09"
        },
        "work" : {
            "id" : "1536734296",
            "last" : "2011-04-14 16:44:09"
        }
    }
]

}

जिसे आप निम्न प्रकार से क्वेरी कर सकते हैं

db.collection.find({ "data.work" : { $exists : true, $ne : null } })

work . के अस्तित्व की जांच करने के लिए data में फ़ील्ड सरणी।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब 3.x.x . के लिए WSO2 DSS समर्थन

  2. नेवला - के कारण ::11000 E11000 डुप्लिकेट कुंजी त्रुटि सूचकांक?

  3. क्या दस्तावेज़-उन्मुख डेटाबेस रिलेशनल डेटाबेस को बदलने के लिए हैं?

  4. मोंगोडीबी पर मैं क्वेरी को कैसे सीमित कर सकता हूं, जब मेरा कॉलबैक अंदर है?

  5. मैं mongodb में किसी सरणी में टेक्स्ट खोज कैसे ढूंढ सकता हूं?