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

MongoDB में स्थानीयकृत डेटा क्वेरी करना

एक सामान्य क्वेरी बनाने के लिए किसी को एकत्रीकरण ढांचे की आवश्यकता होगी क्योंकि इसमें आपकी सहायता के लिए कुछ आसान ऑपरेटर हैं। शुरू करने के लिए, आपको एम्बेडेड दस्तावेज़ को कुंजी/मान जोड़े की सरणी में परिवर्तित करना होगा और फिर पैरामीटर के रूप में लोकेल में जाने वाले कुंजी फ़ील्ड पर सरणी को फ़िल्टर करना होगा।

उदाहरण के लिए, दस्तावेज़ को रूपांतरित करें

  "title": {
    "en": "title en2",
    "de": "title de2"
  },

एक सरणी के लिए

  "title": [
    { "k": "en", '"v": "title en2" },
    { "k": "de", "v": "title de2" }
  ],

$objectToArray का उपयोग करके ऑपरेटर। फिर आप इस सरणी को $filter ऑपरेटर के रूप में

{
    '$filter': {
        'input': { '$objectToArray': '$title' },
        'cond': { '$eq': ['$$this.k', locale] }
    }
}

जहां चर लोकेल पारित पैरामीटर से लिया गया है।

एक बार जब आपके पास फ़िल्टर की गई सरणी हो, तो मान फ़ील्ड प्राप्त करने के लिए $arrayElemAt ऑपरेटर ने मान कुंजी पर इस रूप में लागू किया

{ 
    '$arrayElemAt': ['$title.v', 0]
}

तो अंत में आपको इस तरह से एक पाइपलाइन चलानी होगी:

var locale = 'en';

db.cs.aggregate([
    { '$match': { "cID" : "00001" } },
    { '$addFields': {
        'title': {
            '$filter': {
                'input': { '$objectToArray': '$title' },
                'cond': { '$eq': ['$$this.k', locale] }
            }
        },
        'desc': {
            '$filter': {
                'input': { '$objectToArray': '$desc' },
                'cond': { '$eq': ['$$this.k', locale] }
            }
        }
    } },

    { '$addFields': {
        'title': { 
            '$arrayElemAt': ['$title.v', 0]
        },
        'desc': { 
            '$arrayElemAt': ['$desc.v', 0]
        }
    } }
]);

और कुछ रिफैक्टरिंग के साथ:

var locale = 'en';
var getFilterOperatorExpression = function (field) {
    return {
        '$filter': {
            'input': { '$objectToArray': '$'+ field },
            'cond': { '$eq': ['$$this.k', locale] }
        }
    }
};
var getValueOperatorExpression = function (field) { 
    return { 
        '$arrayElemAt': ['$'+ field +'.v', 0]
    }
};

db.cs.aggregate([
    { '$match': { "cID" : "00001" } },
    { '$addFields': {
        'title': getFilterOperatorExpression('title'),
        'desc': getFilterOperatorExpression('desc'),
    } },

    { '$addFields': {
        'title': getValueOperatorExpression('title'),
        'desc': getValueOperatorExpression('desc')
    } }
]);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB संग्रह अद्यतन:डिफ़ॉल्ट मान वाले दस्तावेज़ को प्रारंभ करें

  2. उल्का - संग्रह। खोज () हमेशा सभी क्षेत्रों को लौटाता है

  3. नेवला और एक्सप्रेस:​​संदर्भ वाले डेटा को ठीक से कैसे निकालें, बनाएं और स्टोर करें

  4. दस्तावेज़ डीबी में एक सबफ़ील्ड को क्वेरी करना

  5. JSON/HTTP/REST इंटरफ़ेस के साथ MongoDB को क्वेरी करना