आपको 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 }]);