mongodb - In Mongo, how to match documents based with ranges? -
मेरे पास निम्न विशेषताओं के साथ दस्तावेज़ों का एक संग्रह है:
{name: "Acme ", minEmployees: 11, maxEmployees: 15, कीमत: 20, priceMultiplierEmployees: 1.5} {नाम:" एक्मे ", minEmployees: 0, maxEmployees: 10, मूल्य: 10 priceMultiplierEmployees: 1.2} {नाम:" एक्मे ", minEmployees: 16 Maxemployees: 20 मूल्य: 50, मूल्यमल्टीप्लियर कर्मचारी: 1.6} इसलिए यदि मेरे एक उपयोगकर्ता इनपुट minEmployees = 12 और maxEmployees = 14 क्योंकि
11 & lt; = 12 & lt; = 15 और 11 & Lt; = 14 & lt; = 15
लेकिन मुझे मोंगो में मिलान करने वाली स्थिति बनाने में समस्या हो रही है (मैं काफी नया हूं)। मैंने दस्तावेज़ीकरण को और अधिक पढ़ा है, लेकिन मुझे ऐसे नतीजे मिलते हैं जिनसे कुछ दस्तावेजों से मेल नहीं होना चाहिए।
सूत्र से ऊपर है
<कोड> documentMinEmployees & lt; = userInputMinEmployees & lt; = documentMaxEmployees और documentMinEmployees & lt; = userInputMaxEmployees & lt; = documentMaxEmployees यह मांगो क्वेरी का वर्तमान चलन है जो मैं उपयोग करने का प्रयास कर रहा हूं:
db.products.aggregate ([{$ match: {name: "Acme "$ Min: कर्मचारी: {$ lte: 12}}}, {$ समूह: {_id: {नाम:" $ name ", मूल्य:" $ मूल्य "}, निम्न ईमेंट कर्मचारी: {$ अधिकतम:" $ minEmployees "}, अंतिम मूल्य: {$ अधिकतम: {$ जोड़: ["$ मूल्य", {$ गुणा: ["$ मूल्य मल्टीप्लीयर कर्मचारी", {$ घटाएं: [12, "$ minEmployees"]}]}]}}}}]); ऊपर दिए गए प्रश्न, अभी निम्नलिखित दस्तावेज वापस कर रहे हैं (जैसा कि अपेक्षित है):
{name: "acme", minEmployees: 11, maxEmployees: 15, कीमत: 20, priceMultiplierEmployees: 1.5} {नाम: "एक्मे", minEmployees: 0, maxEmployees: 10, मूल्य: 10 priceMultiplierEmployees: 1.2} लेकिन मैं इसे अपनी पसंद का वापस करने के लिए केवल निम्नलिखित परिणाम के साथ एक दस्तावेज़ है।
{name: "acme", मूल्य: 20, अंतिम मूल्य: 30} कहां अंतिम मूल्य निम्न कार्य का परिणाम है: 20 * 1.5 (12 - 11) मेरी मुख्य समस्या यह है कि मुझे यह नहीं पता कि यह कैसे लिखना है मोंगो में मिलान हालत:
<कोड> minEmployees & lt; = userInput & lt; = maxEmployees और minEmployees & lt; = userInput2 & lt; = maxEmployees
अंतिम परिणाम के अनुसार आप नीचे चाहते हैं:
{नाम: "एक्मे", मूल्य: 20, अंतिम मूल्य: 30} आप इसका उपयोग कर सकते हैं:
var min = 12, max = 14; Db.products.aggregate ({{$ match: {name: "acme", minEmployees: {$ lte: min}, maxEmployees: {$ gte: max}}}, {$ project: {_id: 0, नाम: " $ नाम ", मूल्य:" $ मूल्य ", अंतिम मूल्य: {$ गुणा: [" $ मूल्य "," $ मूल्य मल्टीप्लीयर कर्मचारी ", {$ घटाएं: [मिनट," $ minEmployees "]}}}}}]));
Comments
Post a Comment