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

JSON क्वेरी शर्तों को MongoDB/Mongoose संचालन में बदलें

आपको MongoDB का $expr बनाना होगा जो उस क्वेरी के समान है जो आपको कोणीय क्वेरी निर्माता मॉड्यूल . से प्राप्त हो रही है . चूंकि नियमसेट को नेस्टेड किया जा सकता है, इसलिए आपको अपने मैपिंग फ़ंक्शन को पुनरावर्ती रूप से चलाने की आवश्यकता है। नीचे दिए गए कोड में शायद हर संभव मामले को शामिल नहीं किया गया है, लेकिन आपको इस तरह की मैपिंग के साथ शुरुआत करने के लिए एक अच्छा परिचय देना चाहिए।

let q = {
  "condition": "and",
  "rules": [
    {
      "field": "Brief_D_Reactiedatum",
      "operator": "!=",
      "value": "Eventtoets_Fn"
    },
    {
      "condition": "or",
      "rules": [
        {
          "field": "Alleen_AO",
          "operator": "=",
          "value": "Parkeerreden"
        }
      ]
    }
  ]
};

const conditions = { "and": "$and", "or": "$or" };
const operators = { "=": "$eq", "!=": "$ne", "<": "$lt", "<=": "$lte", ">": "$gt", ">=": "$gte" };

const mapRule = rule => ({
    [operators[rule.operator]]: [ "$"+rule.field, rule.value ]
});

const mapRuleSet = ruleSet => {
    return {
        [conditions[ruleSet.condition]]: ruleSet.rules.map(
            rule => rule.operator ? mapRule(rule) : mapRuleSet(rule)
        )
    }
};

let mongoDbQuery = { $expr: mapRuleSet(q) };
console.log(mongoDbQuery);

परिणाम अभिव्यक्ति या तो MongoDB के find . को पास की जा सकती है विधि

db.col.find(mongoDbQuery);

या $match में पाइपलाइन चरण:

db.col.aggregate([{ $match: mongoDbQuery }]);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. परिवर्तनीय दूरी के साथ MongoDb निकट/geonear क्वेरी

  2. अनपेक्षित मोंगो निकास कोड 100. पुनरारंभ करना

  3. एक गहरे नेस्टेड दस्तावेज़ क्वेरी में MongoDB के स्थितीय ऑपरेटर $ का उपयोग करना

  4. मोंगोडीबी के पिमोंगो में, मैं गिनती कैसे कर सकता हूं ()?

  5. मोंगो-क्वेरी का उपयोग करके दो सरणी में $setDifference कैसे जांचें?